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 为视频流,无音频流信息。
转载请注明出处。