Я хочу добавить логотип водяного знака в видео (загруженное пользователями) и объединить его с вступлением, и полученное видео должно иметь тот же формат, что и входное видео.

Проблема начинается, когда загруженное видео имеет более одного аудиопотока и включает субтитры.

Я решил проблему со звуком чем-то вроде этой команды.

ffmpeg -i intro.mp4 -i input.mkv -i logo.png -filter_complex "[0:v] масштаб = 480:270, setdar = 16/9 [a]; [1:v] масштаб = 480:270, setdar = 16/9 [b]; [2:0] масштаб = 480:270 [wm]; [b] [wm] оверлей [ov]; [a] [0:a:0] [0:a:0 ] [ov] [1:a:0] [1:a:1] concat = n = 2:v = 1:a = 2 [vd] [a0] [a1] "-map" [vd] "-map "[a0]" -map "[a1]" -y output.mkv

но выходная доза не содержит субтитров.

кто-нибудь может помочь?

1 ответ1

0

использование

ffmpeg -i intro.mp4 -i input.mkv -itsoffset 4.5 -i input.mkv -i logo.png
  -filter_complex
     "[0:v] scale=480:270,setdar=16/9 [a];
      [1:v] scale=480:270,setdar=16/9 [b];
      [3:0] scale=480:270 [wm];
      [b][wm] overlay[ov];
      [a][0:a:0][0:a:0] [ov][1:a:0][1:a:1] concat=n=2:v=1:a=2 [vd] [a0] [a1]"
  -map "[vd]" -map "[a0]" -map "[a1]" -map 2:s? -c:s copy -y output.mkv

После того, как вы укажете какие-либо операторы карты, будут включены только те отображенные потоки Таким образом, вы должны явно отобразить любые потоки субтитров. Так как не может быть один, я добавил трейлинг ? указать условное присвоение.

Я подавал входное видео дважды, потому что временные метки субтитров в выходных данных будут неправильными, поскольку вступление теперь предшествует видео. Смещение временной метки добавляется ко второму входу, и субтитры отображаются из этого канала. Значение его itsoffset должно быть равно продолжительности вступления (в секундах). Там не должно быть необходимости транскодировать субтитры.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .