Это дополнительный вопрос из моего предыдущего вопроса: FFmpeg разделить видео и объединить обратно

Мне нужно concat файлы, как предложено. Я использовал последний, который работал на .avi, но не на .mp4.

  1. Используя первый метод, когда я хочу также обрезать аудио, он выдает ошибку:

    Спецификатор потока ':a' в описании фильтра графа [0:a] trim = 0:15, setpts = PTS-STARTPTS [a0]; [1:а] обрезки = 0:5, setpts = PTS-STARTPTS [a1]; [0:а] обрезки = 20:30, setpts = PTS-STARTPTS [а2]; [a0] [a1] [a2] concat = n = 3:a = 1:a = 0 [out] не соответствует ни одному потоку.

Я попытался другой файл замены (который является разрезом исходного файла), но это выдает другую ошибку:

ffmpeg -i sample.mp4 -i ad2.mp4 -filter_complex "[0:v]trim=0:15,setpts=PTS-STARTPTS[v0]; [0:a]atrim=0:15,asetpts=PTS-STARTPTS[a0]; [1:v]trim=0:5,setpts=PTS-STARTPTS[v1]; [1:a]atrim=0:5,asetpts=PTS-STARTPTS[v1]; [0:v]trim=20:30,setpts=PTS-STARTPTS[v2]; [0:a]atrim=20:30,asetpts=PTS-STARTPTS[a2]; [v0][a0][v1][a1][v2][a2]concat=n=3:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

Ошибка:

[Parsed_asetpts_7 @ 0x1831320] Media type mismatch between the 'Parsed_asetpts_7' filter output pad 0 (audio) and the 'Parsed_concat_12' filter input pad 2 (video)
[AVFilterGraph @ 0x17fd720] Cannot create the link asetpts:0 -> concat:2
Error initializing complex filters.
Invalid argument

Как я могу это исправить?

  1. Используя второй метод, как я могу сделать это для аудио? Поэтому мне нужно сохранить его как отдельный аудиофайл, правильно?

  2. Использование третьего метода это хорошо. Тем не менее, мне нужно сохранить FPS и GOP. Но это портит частоту кадров и, несмотря на то, что оба видео 25 кадров в секунду, на выходе 23,58xxx. Любые способы я могу сохранить GOP и FPS?

0