Наложение ffmpeg на несколько выходов
Я использую ffmpeg 3.4.1 для перекодирования видеофайла высокого разрешения в несколько более низких разрешений с логотипом в углу:
ffmpeg -i "test.mxf" -i "logo.png" ^
-filter_complex "[0:v][1:v] overlay" ^
-s 640x480 -c:v libx264 -b:v 1000K -c:a aac -b:a 96k "test.640x480K.1000K.logo.mp4" ^
-s 1280x720 -c:v libx264 -b:v 2200K -c:a aac -b:a 192k "test.1280x720K.2200K.logo.mp4"
Но таким образом в первом выходном файле есть только логотип.
Я попытался использовать карту, это дает мне логотипы в обоих выходных файлах, но затем звук исчезает:
ffmpeg -i "test.mxf" -i "logo.png" ^
-filter_complex "[0:v][1:v] overlay [output1]; [0:v][1:v] overlay [output2]" ^
-map [output1] -s 640x480 -c:v libx264 -b:v 1000K -c:a aac -b:a 96k "test.640x480K.1000K.logo.mp4" ^
-map [output2] -s 1280x720 -c:v libx264 -b:v 2200K -c:a aac -b:a 192k "test.1280x720K.2200K.logo.mp4"
Что я делаю неправильно?
Я хотел бы сделать 5 выводов за один раз, чтобы избежать запуска ffmpeg 5 раз подряд. Это должно быть более эффективно / быстрее, чтобы сделать это за один раз.
1 ответ
Решение
Использование
ffmpeg -i "test.mxf" -i "logo.png" ^
-filter_complex "[0:v][1:v] overlay,split=2[a][b]" ^
-map [a] -map 0:a -s 640x480 -c:v libx264 -b:v 1000K -c:a aac -b:a 96k "test.640x480K.1000K.logo.mp4" ^
-map [b] -map 0:a -s 1280x720 -c:v libx264 -b:v 2200K -c:a aac -b:a 192k "test.1280x720K.2200K.logo.mp4"