У меня есть два файла: in.mp4
и outro.mp4
.
Мне нужна очень простая вещь: обрезать in.mp4
до произвольной длины и конкатить outro.mp4
после нее.
Я могу сделать это без обрезки
import ffmpeg
main_video = ffmpeg.input('in.mp4')
outro = ffmpeg.input('outro.mp4')
v1 = main_video.video.filter("scale", size='hd720')
a1 = main_video.audio
v2 = outro.video
a2 = outro.audio
joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node
v3 = joined[0]
a3 = joined[1]
out = ffmpeg.output(v3, a3, 'out.mp4')
out.run()
Но если я добавлю обрезку здесь:
main_video = ffmpeg.input('in.mp4').trim(start_frame=0, end_frame=1000)
Я получу эту ошибку:
ValueError: Обнаружена обрезка (end_frame = 1000, start_frame = 0) <17c7b86357e c> с несколькими исходящими ребрами с одинаковой восходящей меткой None; split
фильтр, вероятно, требуется
, и если я пытаюсь сделать это здесь:
v1 = main_video.video.filter("scale", size='hd720').trim(start_frame=0, end_frame=1000)
a1 = main_video.audio.trim(start_frame=0, end_frame=1000)
Я получаю эти ошибки:
[Parsed_trim_2 @ 00000295587ca840] Media type mismatch between the 'Parsed_trim_2' filter output pad 0 (video) and the 'Parsed_concat_3' filter input pad 1 (audio)
[AVFilterGraph @ 00000295587cc800] Cannot create the link trim:0 -> concat:1
Как я могу решить это?