Успешное объединение нескольких видео

1195
Sathya

Моя миссия - создавать видеоролики из старых веб-слайд-шоу. Для начала у меня есть jpegs и аудиофайлы, которые работали как слайд-шоу Flash в старой системе, структурированной так:

Аудио структура

  • my_audio_1.mp3 (этот файл представляет собой 3-х секундный mp3 тишины)
  • my_audio_2.mp3
  • my_audio_3.mp3
  • my_audio_4 и т. д. примерно 30 mp3 за слайд-шоу

Структура изображения

  • my_image_1.jpg (это действует как начальный слайд)
  • my_image_2.jpg
  • my_image_3.jpg
  • my_image_4. и т.д ... примерно 30 изображений в слайд-шоу .

Поскольку существует почти 100 слайд-шоу, которые необходимо преобразовать в видео, я создал веб-интерфейс, использующий PHP для автоматизации процесса, который находится в локальной системе и пытается объединить файлы с помощью shell_exec () . Процесс использует следующий рабочий процесс:

  1. Прокрутите каждый слайд и сделайте AVI или MPEG. Так, например, my_mini_video_2.avi будет видео, которое состоит из my_image_2.jpg и имеет саундтрек my_audio_2.mp3 . Этот слайд будет длиться длину my_audio_2.mp3 .
  2. Соедините / прошейте / спрячьте все мини-видео, чтобы создать финальное видео (используя комбинацию cat и mencoder или ffmpeg (я также пробовал avimerge, но безрезультатно).
  3. Перекодируйте новое «главное» видео в различные форматы, такие как flv и т. Д.

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

Кроме того, я даже пытался создавать мини-видео без аудио, объединяя MP3 в один длинный MP3, используя cat и mp3wrap, а затем назначая новый длинный MP3 в качестве звуковой дорожки, но это всегда приводит к очень короткому файлу или сильно замедленному вниз файл и делает женский голос за кадром звучит как мужской боксер!

Похоже, что нет никаких проблем с оригинальными файлами.

Есть ли у кого-нибудь опыт успешного производства видео с той же точки отсчета? Или есть идеи о том, что я могу делать не так?

В качестве примера:

Если я создаю тихие мини-видео и соединяю их в «temp-master.mpg», а затем объединяю MP3 в один файл «temp-master-audio.mp3», продолжительность аудиофайла составляет 09:10, а Продолжительность видеофайла составляет 08:35. Они должны быть одинаковыми, и звук будет казаться неуклюжим.

Я не опубликовал код, так как написал много комбинаций.

ОБНОВЛЕНО 21 марта 2010

Благодаря рекомендации Майкла Стила относительно AviSynth и VirtualDub (и я добавил плагин GScript), мне удалось добиться некоторого прогресса, и этот скрипт почти работает. Единственная проблема сейчас заключается в том, что хотя в этом примере 4 мини-видео добавляются рядом друг с другом, как я хочу, мини-видео всегда одно и то же (например, видео-4, видео-4, видео-4, видео- 4 вместо видео-1, видео-2, видео-3, видео-4 ):

# A nearly functional AVS file   # Set out some basic variables base_audio = "C:\..." base_image = "C:\..." total_slides = 4  LoopThroughFiles(total_slides, base_audio, base_image)  #This is the function for outputting each combination function AudioNImage(string mp3, string image, float fps) { audio = DirectShowSource(mp3) length = audiolengthF(audio) rate = Audiorate(audio) frames = Int((length/rate)*fps) video = ImageSource(image, end=Int(frames), fps=fps) return audiodub(video, audio) }  #Loop through the files to create the full command string # My audio and image files are in the format of VID0002.jpg and VID0002.mp3 function LoopThroughFiles(int total, string audiopath, string imagepath) { GScript(""" cmd = "" for (i=1, total) { audio = audiopath + "000" + String(i) + ".mp3" picture = imagepath + "000" + String(i) + ".jpg" cmd = cmd + "AudioNImage(audio, picture, 25)" if (i < total) { cmd = cmd + "+"  } } GEval(cmd) """) } 

Так что это почти там, но мне просто нужно выяснить, почему мини-видео не увеличиваются?

5
Это проблема кодирования? Если это так, он получит лучший ответ на http://stackoverflow.com - но вам * нужно * опубликовать некоторый код. Кроме того, если это сообщение может быть перенесено (после 5 голосов), так что вам больше не нужно размещать сообщение снова. ChrisF 14 лет назад 0
Это может быть глупый снимок, но точно ли совпадает длина видеоролика с одним слайдом и используемый с ним mp3? Neo 14 лет назад 0
chrisF, я не публиковал это в StackOverflow, так как это не совсем код, а только варианты командной строки. Нет проблем с программированием. Я считаю, что это связано с командами программного обеспечения. Нео, странная вещь в том, что каждое отдельное мини видео идеально. Общая длина видео работает правильно, но продолжительность звука объединенных файлов больше. 14 лет назад 0
Вы можете спросить на http://home4film.com/, который имеет аналогичный формат QnA и фокусируется на аудио / видео и домашнем кинотеатре. этот вопрос приветствуется здесь, но они также будут благодарны. (и это не часть трилогии переполнения стека, так что перекрестное размещение здесь и здесь не должно быть проблемой.) quack quixote 14 лет назад 0

1 ответ на вопрос

1
Michael Steele

Ваша проблема может быть вызвана из-за разной частоты кадров в исходном контенте. Используйте приложение, такое как MediaInfo, чтобы определить, является ли это проблемой.

Предложение № 1

Я успешно использовал AviSynth и VirtualDub для подобных задач. Avisynth создает видеопоток на основе написанного вами сценария. Он идеально подходит для объединения нескольких небольших файлов, потому что вы можете установить точное время. Возможно, вам придется использовать один из множества сторонних плагинов для отображения последовательных изображений .jpg в течение заданных периодов времени.

Когда вы довольны тем, что производит AviSynth, используйте VirtualDub для кодирования его в любой формат, который вы хотите.

Предложение № 2

Сделайте ваши аудио и видео соединения отдельно, а затем объедините два потока в качестве последнего шага.

  1. Используйте аудио редактор, такой как Audacity, чтобы создать один мастер .mp3 или несжатый .wav.
  2. Создайте видео слайд-шоу, как вы делаете.
  3. Объедините два потока. VirtualDub может сделать это, но это немного громоздко для чего-то такого простого. Я использовал ripbot264. Популярный инструмент Handbrake также может это сделать.
Привет Майкл, спасибо за ваши рекомендации. Я установил AviSynth и VirtualDubMod на ПК здесь, и я все ближе. Я написал скрипт в AviSynth, который почти работает, но не меняет изображения / аудио. Я обновил свой вопрос соответственно ... 14 лет назад 0
Майкл, теперь я собираюсь использовать комбинацию AviSynth и VirtualDub для создания моих мастер-файлов. Я использую пользовательский код для создания скрипта AVS для AviSynth, а затем я буду использовать другое программное обеспечение для кодирования. Спасибо за совет. 14 лет назад 0

Похожие вопросы