У меня есть два видео: a.mp4 и b.mp4. Я хочу масштабировать a.mp4, обрезать первые 10 секунд и последние 10 секунд b.mp4, затем добавить субтитры в b.mp4, а затем объединить два видео (a.mp4 после масштабирования и b.mp4 после обрезки /hardsub) в одно. Это мой сценарий:

ffmpeg -i a.mp4 -i b.mp4 -filter_complex '[0:v] scale = 1280:720 [in1]; [1:v] trim = 0:10, trim = 110:120, ass = subtitle.ass [IN2]; [in1] [in2] concat = n = 2:v = 1:a = 1 [out] '-map [out] -c:v libx264 output.mp4

(120 - это длина в секундах от b.mp4)

но это дало мне ошибку:

Несоответствие типа мультимедиа между выходной панелью фильтра 0 Parsed_ass_2 (видео) и входной панелью фильтра Parsed_concat_3 1 (аудио) [AVFilterGraph @ 0x406c3c0] Невозможно создать задницу ссылки:0 -> concat:1

1 ответ1

0

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

ffmpeg -i a.mp4 -i b.mp4
   -filter_complex '[0:v]scale=1280:720,setsar=1[in1];
                    [1:v]ass=subtitle.ass,trim=10:110,setpts=PTS-STARTPTS,setsar=1[in2];
                    [1:a]atrim=10:110,asetpts=PTS-STARTPTS[1a];
                    [in1][0:a][in2][1a] concat=n=2:v=1:a=1 [v] [a]'
   -map [v] -map [a] -c:v libx264 output.mp4

Поскольку вы также объединяете аудио, фильтр ожидает аудиопоток в паре с каждым видеопотоком.

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