FFMPEG 将 MP4 文件与音频连接起来

FFMPEG 将 MP4 文件与音频连接起来

这是我上一个问题的后续问题:FFmpeg 分割视频并合并回来

我需要concat建议的文件。我使用的是最后一个文件,它适用于 .avi,但不适用于 .mp4。

  1. 使用第一种方法,当我想修剪音频时,它会引发错误:

    过滤器图描述中的流说明符“: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

我该如何修复它?

  1. 使用第二种方法,我该如何对音频进行上述操作?所以我需要将其保存为单独的音频文件,对吗?

  2. 使用第三种方法很好。但是,我需要保留 FPS 和 GOP。但它会弄乱 fps,尽管两个视频都是 25 fps,但输出却是 23.58xxx。有什么方法可以保留 GOP 和 fps?

相关内容