Присоединение и обрезка видеофайлов в формате mpeg 2 - PullRequest
0 голосов
/ 04 января 2012

У меня есть несколько видеофайлов mpeg2. Что мне нужно сделать, это получить клип видео, которое содержится в нескольких из этих видео mpeg2. На данный момент я занимаюсь:

  • Присоединитесь к ним с помощью команды:

        copy /b file1.mpg + ... + fileN.mpg output.mpg
    
  • Длительность ouput.mpg неверна, поэтому я использую FFMpeg, чтобы это исправить:

        ffmpeg -y -i output.mpeg -target pal-dvd outputFixed.mpg
    

Проблема в том, что когда я пытаюсь извлечь только одну часть этого файла output.mpg, в то же время я «исправляю» ее с помощью команд -ss и -t FFMpeg, потому что продолжительность видео неверна, как я сказал. 1015 *

Итак, вопрос:

  • Есть ли способ объединить файлы Mpeg2, не указав неправильную длительность?
  • Есть ли способ зафиксировать продолжительность файла Mpeg2 и извлечь одну порцию одновременно?

Любое предложение будет оценено.

1 Ответ

0 голосов
/ 04 января 2012

Из ffmpeg FAQ :

3.13 Как объединить видеофайлы?

Несколько мультимедийных контейнеров (MPEG-1, MPEG-2 PS, DV) позволяют объединять видеофайлы, просто объединяя их.

Следовательно, вы можете объединить свои мультимедийные файлы, сначала перекодировав их в эти привилегированные форматы, затем используя команду humble cat (или такую ​​же скромную копию под Windows)и, наконец, перекодируем обратно в выбранный вами формат.

ffmpeg -i input1.avi -same_quant промежуточный .mpg ffmpeg -i input2.avi -same_quant промежуточный2.mpg cat промежуточный уровень 1.mpg промежуточный2.mpg> промежуточный_all.mpgffmpeg -i interval_all.mpg -same_quant output.avi Обратите внимание, что вы должны либо использовать -same_quant, либо установить достаточно высокий битрейт для промежуточных и выходных файлов, если хотите сохранить качество видео.

Также обратите внимание, что выможет использовать огромные промежуточные файлы, используя именованные каналы, если ваша платформа поддерживает это:

mkfifo interval1.mpg mkfifo interval2.mpg ffmpeg -i input1.avi -same_quant -y промежуточный .mpg </ dev / null & ffmpeg -i input2.avi -same_quant -y промежуточный2.mpg </ dev / null & cat промежуточный1.mpgпромежуточный2.mpg | \ ffmpeg -f mpeg -i - -same_quant -c: v mpeg4 -acodec libmp3lame output.avi Точно так же формат yuv4mpegpipe и необработанное видео, необработанные аудиокодеки также позволяют объединять, и этап транскодирования практически без потерь,При использовании нескольких yuv4mpegpipe (s) первая строка должна быть удалена из всех, кроме первого потока.Это может быть достигнуто, пропуская через хвост, как показано ниже.Обратите внимание, что при прохождении через хвост вы должны использовать группирование команд {;} для правильного фона. </p>

Например, допустим, мы хотим объединить два FLV-файла в файл output.flv:

mkfifo temp1.a mkfifo temp1.v mkfifo temp2.a mkfifo temp2.v mkfifo all.a mkfifo all.v ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -> temp1.a</ dev / null & ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -> temp2.a </ dev / null & ffmpeg -i input1.flv -an -f yuv4mpegpipe ->temp1.v </ dev / null & {ffmpeg -i input2.flv -an -f yuv4mpegpipe - </ dev / null |tail -n +2> temp2.v;} & cat temp1.a temp2.a> all.a & cat temp1.v temp2.v> all.v & ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \ -f yuv4mpegpipe -iall.v \ -same_quant -y output.flv rm temp [12]. [av] all. [av]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...