Use the atrim, asetpts, and concat filters:
ffmpeg -i video.mkv -i audio.mp3 -filter_complex \
"[0:a]atrim=end=12,asetpts=PTS-STARTPTS[aud1]; \
[1:a]atrim=30:42,asetpts=PTS-STARTPTS[aud2]; \
[0:a]atrim=start=24,asetpts=PTS-STARTPTS[aud3]; \
[aud1][aud2][aud3]concat=n=3:v=0:a=1[aout]" \
-map 0:v -map "[aout]" -c:v copy -c:a libfdk_aac output.mp4
Run Code Online (Sandbox Code Playgroud)
atrim从第一个输入 ( video.mkv)获取前 12 秒的音频。atrim从第二个输入 ( audio.mp3)获得 30-42 秒。atrim从第一个输入 ( video.mkv)获取 24 秒结束的音频。concat 然后将这些片段组合成一个音频流。asetpts我得到缓冲区队列溢出导致“生涩”输出。有关更多信息,请参阅atrim文档。