这是我上一个问题的后续问题:FFmpeg 分割视频并合并回来
我需要concat
建议的文件。我使用的是最后一个文件,它适用于 .avi,但不适用于 .mp4。
使用第一种方法,当我想修剪音频时,它会引发错误:
过滤器图描述中的流说明符“:a”[0:a]trim=0:15,setpts=PTS-STARTPTS[a0]; [1:a]trim=0:5,setpts=PTS-STARTPTS[a1]; [0:a]trim=20:30,setpts=PTS-STARTPTS[a2]; [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
我该如何修复它?
使用第二种方法,我该如何对音频进行上述操作?所以我需要将其保存为单独的音频文件,对吗?
使用第三种方法很好。但是,我需要保留 FPS 和 GOP。但它会弄乱 fps,尽管两个视频都是 25 fps,但输出却是 23.58xxx。有什么方法可以保留 GOP 和 fps?