Я использую сложный фильтр, который работает, но когда я немного меняю его, я получаю плохое качество результата. Эта версия работает нормально:
[0:v]scale=640:480 [temp0];
[0:v] setpts=PTS-STARTPTS-1/TB, scale=128x96 [firsthistory];
[0:v] setpts=PTS-STARTPTS-1/TB, scale=128x96 [secondhistory];
[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];
[temp1][secondhistory] overlay=shortest=1:x=480:y=139
Для этого нужно снять видео, а затем поместить два подэкрана с правой стороны, которые показывают, что видео сдвинуто вперед во времени. Чтобы установить время для заголовков, я использую setpts = PTS-STARTPTS-n/TB, где n - количество секунд для смены времени. Это работает, но, честно говоря, я этого не понимаю.
Во всяком случае, это работает, когда n = 1. Если я переместу видео дальше вперед, получающееся качество видео будет плохим. Вывод видео прерывистый, например, с использованием приведенного ниже n = 2,4:
[0:v]scale=640:480 [temp0];
[0:v] setpts=PTS-STARTPTS-2/TB, scale=128x96 [firsthistory];
[0:v] setpts=PTS-STARTPTS-4/TB, scale=128x96 [secondhistory];
[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];
[temp1][secondhistory] overlay=shortest=1:x=480:y=139
Полные параметры ffmpeg
'-i',
'b77b24e5-27a6-459b-aa11-8f79e0162659.mpeg',
'-filter_complex',
'[0:v]scale=640:480 [temp0];[0:v] setpts=PTS-STARTPTS-2/TB, scale=128x96 [firsthistory];[0:v] setpts=PTS-STARTPTS-4/TB, scale=128x96 [secondhistory];[temp0][firsthistory] overlay=shortest=1:x=480:y=28 [temp1];[temp1][secondhistory] overlay=shortest=1:x=480:y=139',
'-c:v',
'libvpx',
'-b:v',
'1M',
'-c:a',
'libvorbis',
'-vf',
'scale=960:-1',
'50649689680c6e5976d1d7fb3fd603259c2ab6e0.webm'