如何使用命令行替换视频中的部分音频?

如何使用命令行替换视频中的部分音频?

录制的音频中有一部分包含敏感信息。我想删除该信息,同时保持视频和其余音频完好无损。最好使用命令行,并能够准确指定开始和结束。

答案1

分割、替换您想要的部分音频,然后将各部分重新连接在一起。

https://www.ffmpeg.org/ffmpeg-formats.html#segment_002c-stream_005fsegment_002c-ssegment

https://stackoverflow.com/questions/12368151/adding-silent-audio-to-mov-in-ffmpeg

https://trac.ffmpeg.org/wiki/How%20to%20concatenate%20(join,%20merge)%20media%20files

我不知道这是否能提供完美的执行,但这是我解决你的问题的方法。

答案2

根据@dstob的回答,我注意到没有人建议任何代码。以下是我所做的1

ffmpeg -i in.mkv -c copy -t 00:01:30 seg1.mkv # segment the clip at time=90 seconds
ffmpeg -i in.mkv -c copy -ss 00:01:30 seg2.mkv # obtain the remainder of the clip
ffmpeg -i seg1.mkv -i in.wav -c copy -map 0:v:0 -map 1:a:0 new-seg.mkv # replace audio from the first 90 seconds of the original clip using in.wav
ffmpeg -i new-seg.mkv -i seg2.mkv -filter_complex "concat=n=2:v=1:a=1" -vn final-out.mkv # concatenate them back together; v=1 and a=1 are telling ffmpeg that both files have video and audio; n=2 tells ffmpeg that you are concatenating two files
# rm seg1.mkv seg2.mkv new-seg.mkv # clean up

1请注意,我尝试进行最少的重新编码和选项(以使其尽可能通用,方便人们使用)。您必须按照@dstob 提供的链接来了解有关标志/选项的更多信息。

相关内容