Как пакетно вставить одну и ту же сцену клипа в начало нескольких видео?

Как пакетно вставить одну и ту же сцену клипа в начало нескольких видео?

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

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

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

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

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

решение1

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

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

Этот скрипт является примером руководства на странице, ссылка на которую приведена здесь: [::: связь :::] и скрипт просто просканирует каталог 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, который конвертирует 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;
}

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

источники:

решение2

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

для %a в ("*.flv") выполните Mencoder -oac copy "c:\INTRO.flv" "%a" -o "c:\TEMP\%a"

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

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

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

Связанный контент