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]