仅使用命令行删除部分视频(可能是 FFMPEG)

仅使用命令行删除部分视频(可能是 FFMPEG)

我有一个长达 4 小时的 .mp4 文件,当我将其上传到 Youtube 时,由于 01:21:47 到 01:22:24 之间 30 秒的某首歌曲,整个音轨都变得静音,我怎样才能仅删除视频的这一部分,或者更好的是 - 仅删除视频中的这一部分音频?

答案1

如果您确定这只是音频的那部分,那么您可以将其静音:

ffmpeg -i input.mp4 -af volume=0:enable='between(t,01:21:47,01:22:24)' -c:v copy output.mp4

根据您的 shell,您可能必须转义时间码中的冒号,或者切换到秒表示形式(01:21:47 = 4907, 01:22:24 = 4944)。

答案2

这对我很有用(感谢 Manny Morales — 一个懒散的朋友):

您需要分别完成三个操作。

假设您有一个 20 秒的视频,并且想要删除 10 秒到 15 秒之间的 5 秒部分。

你做这个:

01.

ffmpeg -ss 00:00:00 -to 00:10:00 -i input.mp4 -c copy 01.mp4
ffmpeg -ss 00:00:15 -to 00:00:20 -i input.mp4 -c copy 02.mp4
echo file 01.mp4 > list.txt
echo file 02.mp4 >> list.txt
ffmpeg -f concat -i list.txt -c copy output.mp4

答案3

您可以使用 FFmpeg 过滤器图来完成此操作。

尝试以下方法:

ffmpeg -i input.mp4 -filter_complex '[0:v] trim=end=01:21:47 [v1], [0:a] atrim=end=01:21:47 [a1], [0:v] trim=start=01:22:24 [v2], [0:a] atrim=start=01:22:24 [a2], [v1][a1][v2][a2] concat=n=2:v=1:a=1 [v][a]' -map '[v]' -map '[a]' output.mp4

这个特殊的滤镜图将输入分割成四个部分:初始视频片段、初始音频片段、最终视频片段和最终音频片段。然后它将视频和音频片段连接在一起。

https://ffmpeg.org/ffmpeg-filters.html有关过滤的更多详细信息。

相关内容