Я отчаянно пытаюсь понять, почему фильтр наложения ffmpeg плохо себя ведет
У меня есть следующая команда ffmpeg
ffmpeg -loop 1 -r 60 -i ./tmp/tmp0.jpg -loop 1 -r 60 -i ./tmp/tmp1.jpg -y -filter_complex
[0]trim=duration=5[0_trim0];
[0_trim0]scale=width=1280:height=-1[0_scale1];
[0_scale1]setsar=sar=1[0_setsar2];
[0_setsar2]crop=out_w=1280:out_h=720:x=0:y=(in_h - 720) / 2[0_setsar2_crop0];
[0_setsar2_crop0]setsar=sar=1[0_setsar3];
[0_setsar3]split=2[fl0_r0][fl0_r1];
[1]trim=duration=2[1_trim0];
[1_trim0]scale=width=1280:height=-1[1_scale1];
[1_scale1]setsar=sar=1[1_setsar2];
[1_setsar2]crop=out_w=1280:out_h=720:x=0:y=(in_h - 720) / 2[1_setsar2_crop0];
[1_setsar2_crop0]setsar=sar=1[1_setsar3];
[1_setsar3]split=2[fl1_r0][fl1_r1];
[fl0_r0]setpts=PTS-STARTPTS[fl0_r0_];
[fl1_r0]setpts=PTS-STARTPTS[fl1_r0_];
[fl0_r0_][fl1_r0_]overlay=x='if(lte(x, (main_w - overlay_w) / 2), -overlay_w + t / 5 * (overlay_w + (main_w - overlay_w) / 2), (main_w - overlay_w) / 2)'[tr0_overlay];
[tr0_overlay]trim=duration=5[tr0];
[fl0_r1][tr0][fl1_r1]concat=n=3:v=1[vt]
-map [vt] -acodec libmp3lame -r 60 -vcodec libx264 -f mp4 -pix_fmt yuv420p -preset fast -crf 20 ./tmp/output.mp4
(Это дополнено для лучшей видимости)
Что я пытаюсь сделать?
- показать 1-е изображение в течение 5 секунд (произвольное число)
- передвиньте 2-е изображение поверх 1-го изображения слева направо в течение 5 секунд (произвольное число, может быть 1, может быть 10 - не должно зависеть от длины 1-го и 2-го входных потоков)
- показать 2-е изображение в течение 2 секунд (произвольное число)
Что я получу?
Я пробовал различные решения, с этим 2-е изображение перемещается над 1-м изображением только на 1-ю секунду, а затем резко останавливается в течение следующих 4-х секунд, после чего мгновенно переходит к концу анимации.
пока ffmpeg спамит много предупреждений
frame= 98 fps=8.1 q=28.0 size= 144kB time=00:00:01.08 bitrate=1087.8kbits/
[Parsed_overlay_14 @ 0x30d6400] [framesync @ 0x30d64e8] Buffer queue overflow, d ropping
Я подозреваю, что есть некоторые проблемы с временными рамками кадров, но пока что я не добился успеха. Если я добавлю setpts filter 5 * PTS - он работает отлично, но я наблюдаю падение 5x кадров (с 60 кадров в секунду до 12 кадров в секунду) из: https://ffmpeg.org/ffmpeg-filters.html#Examples-88 (замедленная съемка )
По какой-то причине фильтр наложения работает только с 1-й секундой видео - независимо от того, что я пытаюсь сделать
Я также попытался объединить fps и setpts filter как своего рода странный взлом - безуспешно
версия ffmpeg:
ffmpeg version N-76045-g97be5d4 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
Вероятно, я упускаю что-то очевидное! Пожалуйста помоги...