如何使音频从视频中的指定点开始并持续指定的时间量

How make audio to start from the specified point in the video and last specified amount of time

假设我有名为 "samplevideo" 的示例视频和名为 "sampleaudio" 的示例音频。我想用从 5 秒到 12 秒的 sampleaudio 替换 samplevideo 的音频。直到 5 秒标记视频音频不会改变,然后 sampleaudio 开始并持续 7 秒。

我试图想出解决这个问题的 ffmpeg 命令:

ffmpeg -i samplevideo.mp4  -i sampleaudio.aac -ss 20 -map 0:v  -map 1:a -c:v copy output.mp4

问题:
它从 20 秒时间标记开始剪切视频。我想要的是保留视频和原始音频流,直到它达到所需的时间标记,然后使用 sampleaudio 直到所需的结束时间。

如有任何帮助,我将不胜感激。

来自 problem research,正在查看:
https://superuser.com/questions/708125/add-audio-at-specific-time-in-video-using-ffmpeg

你可以试试:

ffmpeg -i samplevideo.mp4 -itsoffset 00:00:20 -i sampleaudio.aac -map 0:v -map 1:a -c:v copy -async 1 output.mp4

如果还是不行,再看看研究结果中的其他建议。

您需要使用filtergraph拼接音频。试试这个:

ffmpeg -i samplevideo.mp4  -i sampleaudio.aac \
       -filter_complex "[1:a]asendcmd='5.0 astreamselect map 1;\
                                      12.0 astreamselect map 0',\
                        [0:a]astreamselect=inputs=2:map=0[aout]"
       -map 0:v  -map [aout] -c:v copy output.mp4

只需使用带有选择性静音的 amix。

ffmpeg -i samplevideo.mp4  -i sampleaudio.aac \
       -filter_complex "[0:a]volume=0:enable=between(t\,5\,12)[a0];\
                        [1:a]atrim=0:7,adelay=5s:all=1[a1];\
                        [a0][a1]amix=normalize=0:duration=first[aout]"
       -map 0:v  -map [aout] -c:v copy output.mp4

使用 ffmpeg 5.0