FFmpeg разделить и объединить проблемы - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь использовать FFmpeg, чтобы разделить различные клипы, объединить их, а затем перекодировать объединенный поток. Вот командная строка, которую я хотел бы использовать с 2 входными клипами (на самом деле я хотел бы использовать более 2, но для иллюстрации этой проблемы достаточно 2):

./ffmpeg -y -noautorotate -ss 4.9 -i in0.ts -noautorotate -i in1.ts \
   -threads 0 -map_chapters -1 -write_tmcd 0 \
   -metadata location= -max_muxing_queue_size 2000 -f mp4 \
   -movflags faststart -filter_complex "[0:v:0]yadif=deint=interlaced,scale=1280:720:flags=bicubic,setdar=1.7777778[v0];[1:v:0]yadif=deint=interlaced,scale=1280:720:flags=bicubic,setdar=1.7777778[v1];[v0][0:a:0][v1][1:a:0]concat=n=2:v=1:a=1[cat_v][cat_a]"
   -map "[cat_a]" -acodec aac -ac 2 -ar 44100 -b:a 160k -async 1
   -sn -map "[cat_v]" -vcodec libx264 -profile:v baseline -level 4 -b:v \
   5400k -preset medium -x264opts ref=3:keyint=90 \
   -r 30000/1001 -vsync 1 -metadata:s:v rotate= -pix_fmt yuv420p outputfile01.mp4

Но FFmpeg зависает и застревает в кадре 0. Последний ключевой кадр in0.ts имеет значение 4 с. Если бы я изменил -ss 4.9 на -ss X, где X <= 4.0, то это не проблема. </p>

Моя версия FFmpeg - 3.3. Я знаю, что эта проблема не существует в FFmpeg 4.0.x и далее или в FFmpeg 3.2.x, но существует в 3.3.x и 3.4.x. Может кто-нибудь помочь мне точно понять, какая ошибка была введена в 3.3.x и 3.4.x, что есть эта проблема?

1 Ответ

0 голосов
/ 27 июня 2018

-ss до -i зависит от поиска с использованием демультиплексора. Для файлов с интеркодированными видеопотоками целью поиска будет ключевой кадр. Функция обратного вызова в демультиплексоре MPEG-TS возвращает первый ключевой кадр после указанной точки.

Кстати, я могу воспроизвести эффект с помощью последних сборок. Почему вы говорите, что поведение не происходит в 4.0 или 3.2?


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

./ffmpeg -y -noautorotate -i in0.ts -noautorotate -i in1.ts -filter_complex "[0:v:0]yadif=deint=interlaced,trim=4.9,setpts=PTS-STARTPTS,scale=1280:720:flags=bicubic,setdar=1.7777778[v0];[1:v:0]yadif=deint=interlaced,scale=1280:720:flags=bicubic,setdar=1.7777778[v1];[0:a:0]atrim=4.9,asetpts=PTS-STARTPTS[a0];[v0][a0][v1][1:a:0]concat=n=2:v=1:a=1[cat_v][cat_a]" -sn -map "[cat_a]" -async 1 -ac 2 -ar 44100 -c:a aac -b:a 160k -map "[cat_v]" -r 30000/1001 -vsync 1 -pix_fmt yuv420p -c:v libx264 -threads 0 -profile:v baseline -level:v 4 -b:v 5400k -preset medium -x264opts ref=3:keyint=90 -map_chapters -1 -metadata location= -metadata:s:v rotate= -max_muxing_queue_size 2000 -f mp4 -write_tmcd 0 -movflags faststart outputfile01.mp4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...