FFmpeg 分割视频时抛弃音频
一、通过流选择参数精准保留视频
ffmpeg -i input.mp4 -c copy -map 0:v -segment_time 00:10:00 -f segment output_%03d.mp4
关键参数解释:
-map 0:v
:仅选择第一个输入文件(0:
)的所有视频流(v
)与原始命令的
-map 0
(全选所有流)相比,此参数主动过滤了音频流
适用场景:输入文件包含多个视频流(如多角度视频),需要保留所有视频流但排除其他流
二、通过禁用音频参数排除音频
ffmpeg -i input.mp4 -c copy -map 0 -an -segment_time 00:10:00 -f segment output_%03d.mp4
关键参数解释:
-an
:强制禁用音频流(不处理音频编码和封装)保留
-map 0
以处理其他流(如字幕),但实际输出中仅保留视频流
适用场景:需要保留除音频外的其他流(如字幕),但最终输出仅需视频
三、进阶操作建议
多视频流处理
若输入文件包含多个视频流(如画中画),可通过-map 0:v:0
选择特定视频流:
ffmpeg -i input.mp4 -c copy -map 0:v:0 -segment_time 00:10:00 -f segment output_%03d.mp4
兼容性验证
建议先通过ffprobe input.mp4
查看输入文件的流信息,确认视频流编号和类型。容器格式适配
MP4容器支持纯视频输出,若遇到格式问题可尝试强制指定容器:
ffmpeg -i input.mp4 -f mp4 -c copy -map 0:v -segment_time 00:10:00 output_%03d.mp4
四、两种方案的对比
方案 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
-map 0:v | 精准控制流选择,避免意外包含其他流 | 需了解流编号规则 | 需要保留所有视频流 |
-an | 操作简单,兼容旧版FFmpeg | 可能残留字幕等非音频流 | 快速禁用音频 |
五、操作验证
分割完成后,可通过以下命令检查输出文件是否仅含视频流:
ffprobe output_000.mp4
输出中应显示 Stream #0:0 为视频流,无音频流信息。
转载请注明出处。