Изменения

м
Нет описания правки
<source lang="bash">
ffmpeg -y -ss 00:24:18 -i VTS_01_1.VOB -map 0.0 -map 0.1 -map 0.2 -map 0.3 \ -vcodec rawvideo -acodec pcm_s16le -ac 6 -ar 48000 file1.avi \ -acodec pcm_s16le -ac 6 -ar 48000 -newaudio -acodec pcm_s16le \ -ac 1 -ar 48000 -newaudio &>log1 &ffmpeg -y -t 91 -i VTS_01_2.VOB -map 0.0 -map 0.1 -map 0.2 -map 0.3 \ -vcodec rawvideo -acodec pcm_s16le -ac 6 -ar 48000 file2.avi \ -acodec pcm_s16le -ac 6 -ar 48000 -newaudio -acodec pcm_s16le \ -ac 1 -ar 48000 -newaudio &>log2 &
cat file1.avi file2.avi > file.avi &
</source>
<div style="margin-top: 8px">{{Cut|А в случае кучи raw-файлов было бы...|<source lang="bash">
ffmpeg -y -ss 00:24:18 -i file1.avi -an -f yuv4mpegpipe file1.v &>log1.v &
ffmpeg -y -ss 00:24:18 -i file1.avi -vn -map 0.1 -ac 6 -ar 48000 -f s16le file1.a1 &>log1.a1 &
Кстати 1: запустить один ffmpeg, который будет писать сразу несколько выходных файлов, не получится, т.к. кодирующий ffmpeg их будет анализировать по очереди, а декодирующий захочет писать все вместе. А писать в канал, из которого никто не читает, нельзя. Поэтому "сборка" просто повиснет.
Кстати 2: сырой видеоформат называется <tt>-f yuv4mpegpipe</tt>. Он допускает конкатенацию, но в этом случае нужно отрезать первую строку у всех файлов, кроме первого, чтобы их потоки начинались со слова "FRAME". Сырой видеокодек - <tt>-vcodec rawvideo</tt>.}}</div>
'''Шаг третий''': запускаем кодирующий ffmpeg.
<source lang="bash">
ffmpeg -y -i file.avi -vcodec libx264 -vpre hq -qmax 28 \ -acodec libfaac -ab 448k -ac 6 BareNecessities6ch.avi \ -acodec libfaac -ab 384k -ac 6 -newaudio \ -acodec libfaac -ab 96k -ac 1 -newaudio
</source>
И всё, с данного момента вся спящая в фоновом режиме машинерия активизируется и начнёт кодировать-декодировать.
Изначально вкурено с http://ffmpeg.org/faq.html#TOC29SEC29, но сильно исправлено и дополнено :)
{{wl-publish: 2010-03-31 01:27:18 +0400 | VitaliyFilippov }}