Ну, это было несколько дней на поиски подходящего автоматического или полуавтоматического способа массового объединения файлов таким образом. По сути, я хочу вставить один и тот же клип перед кучей других клипов.

В этом случае я пытался использовать файлы .flv, .mp4, .avi (всегда объединяющие одни и те же кодеки), и мне не удалось протестировать все программы, доступные как в Windows, так и в OSx. Поверьте мне, я перепробовал их все. Единственные, кто должен справиться с этой задачей - от Videocharge: Watermark Master и Videocharge Studio. Никто из них не мог правильно выполнить задачу. Может быть, каким-то образом я мог бы добиться этого с помощью сценариев в After Effects или Sony Vegas, я просто не нашел ни одного.

Сейчас я пытаюсь найти какой-то способ добиться того же с помощью командной строки и сценариев Unix ... Мне все равно. Я просто не хочу монтировать Ubuntu только для этих задач. Я не программист, но я очень упрямый (что иногда приводит меня к вечным вечерам), поэтому я был бы признателен за помощь или совет от любого, кто увлечен и достаточно хорош в пакетной обработке видео или написании сценариев.

Прямо сейчас единственные полезные пути, которые я нашел, заставляют меня использовать команды mencode или ffmpeg с помощью команд, но я не могу выполнить объединение в пакетном режиме. Меня не волнует способ сортировки видео. Но учитывая, что операция будет выполняться с сотнями или тысячами видео, было бы неуместно хранить их все в отдельных папках, каждая из которых сопровождалась бы "уникальным" вступительным клипом. Я предполагаю, что наиболее логичным способом было бы хранить "кучу" видео в папке, а также вступительный клип в той же папке, что и кодировщик или рендер.

Заранее спасибо за любую помощь или руководство,

2 ответа2

0

Ну, я добавил видео, но никогда не добавлял в начале. Вы можете использовать avidemux для добавления видео!

Я не очень хорош в javascripting, поэтому, пожалуйста, извините меня за то, что я не пишу это для вас. Там есть учебник по написанию сценариев для Avidemux. Avidemux - это бесплатный видео конвертер с открытым исходным кодом. Вы можете добавить эффекты к вашему аудио / видео в avidemux и сохранить его в нескольких форматах.

Этот скрипт является примером учебника по ссылке на страницу, приведенной здесь: [ ::: link ::: ], и скрипт просто просканирует каталог orgDir и распакует все файлы AVI. Полученный файл помещается в каталог destDir (с использованием нового API directorySearch).

Функции Avidemux следующие: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

и другие функции: загрузка, добавление, сохранение, saveDVD, saveOGM, clearSegments, addSegment, goToTime, forceUnpack, setContainer

Дополнительные функции скрипта здесь: http://www.avidemux.org/admWiki/doku.php?id=using:scripting#avidemux_functions

Turotial Script, который преобразует AVI-файл, выглядит следующим образом:

//AD  <-
/*
      Simple script that scans the orgDir directory
      and unpack all AVI files
      The resulting file is put in destDir directory
      Using new directorySearch API
*/
var app = new Avidemux();
var ds = new DirectorySearch();
var orgDir;
var destDir;
var reg =new RegExp(".$");
/*
      This is for Unix
      For Windows change to
      sep="\\";
      reg2=new RegExp("\\.*\\");
*/
var sep="\\";
var reg2 =new RegExp("\/.*\/");
var extension;
var target;
//
//
//
//      select files from original & target directories
//
      orgDir=fileReadSelect();
      destDir=fileWriteSelect();
      orgDir=pathOnly(orgDir);
      destDir=pathOnly(destDir);
//
//      strip last \\ or //
//
      orgDir=orgDir.replace(reg,"");
      destDir=destDir.replace(reg,"");
      print("orgDir : <"+orgDir+">");
      print("destDir : <"+destDir+">");
//
// Go
//
if(ds.Init(orgDir))
{
  while(ds.NextFile())
  {
      // Only process file we want i.e. AVI
      if(!ds.isNotFile && !ds.isDirectory && !ds.isHidden && !ds.isArchive && !ds.isSingleDot && !ds.isDoubleDot)
      {
          extension=ds.GetExtension();
          if(extension == "avi")
          {
              target=ds.GetFileName();
              target=destDir+sep+target;
              print("***"+ds.GetFileName()+"-->"+target);
              processFile(orgDir+sep+ds.GetFileName(),target);
              }
          //print("File: "+ds.GetFileName()+" is "+ds.GetFileSize()+" bytes, extension "+extension);
      }
  }
  print("We just searched in directory \"" + ds.GetFileDirectory() + "\"");
  ds.Close();
}
else
  displayError("Error initializing the directory search");
displayInfo("Finished !");
function processFile(filename, targetfile)
{
      // Load the file
      app.forceUnpack();
      app.load(filename);
      app.rebuildIndex();
      app.audio.delay=0;
      app.audio.mixer("NONE");
      app.audio.scanVBR();
      app.setContainer("AVI_UNP");
      app.save(targetfile);
      return 1;
}

Надеюсь это поможет...

источники:

0

Приветствия много за ваше предложение @ user2377276. Я действительно ценю усилия. Фактически, ваш обходной путь - тот, который ведет меня в правильном направлении. Ну, я на это надеюсь, так как я еще не преуспел. До сих пор, самое близкое, что я мог сделать для слияния, - это различные варианты следующего кода, выполняемого в том же каталоге, что и несколько разных видео. Уникальный файл для добавления был помещен в корень, и я создал C:/TEMP для вывода.

для% a in ("* .flv") сделайте Mencoder -oac копию "c:\INTRO.flv" "% a" -o "c:\TEMP\% a"

Все видео в FLV1, но они имеют немного другое разрешение, так что я получаю дерьмо, в основном.

Я не знаю, стоит ли мне попробовать ffmpeg. Предложения?

Я совершенно уверен, что этого можно достичь без необходимости перекодирования, поскольку я протестировал несколько программ, и ни одна из них не перекодирует, в некоторых случаях они просто увеличивают разрешение. Фактически, программа, которая, казалось, работала лучше всего, была приложением AIR Rich Flv, но она не работает в пакетном режиме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .