如何使用FFmpeg将音频文件分割为两个文件?使用|指定分割时间戳时命令报错的正确用法
解决FFmpeg分割音频时segment参数的错误问题
你这两个命令的问题核心是对segment格式的参数传递方式理解错了,咱们一步步来修正:
先分析错误原因
- 命令1里,你把
segment格式和它的参数timestamps="60|150"写在一起传给-f选项了,但-f后面只需要指定格式名称segment,参数要单独用专门的选项来传递,这才导致了格式不匹配的报错。 - 命令2虽然分开了
-f segment和timestamps,但FFmpeg并不认识单独的timestamps选项——它是segment格式的子选项,所以FFmpeg不知道怎么处理这个参数,才会提示输出文件没有流。
正确的命令写法
有两种常用的正确方式,选哪种都可以:
方式1:直接用-segment_timestamps参数
ffmpeg -i input.wav -c copy -segment_timestamps 60|150 output%03d.wav
这里-segment_timestamps后面直接跟用|分隔的时间点,FFmpeg会自动识别这是segment分割的时间标记。
方式2:用-segment_options传递子选项
ffmpeg -i input.wav -f segment -c copy -segment_options timestamps="60|150" output%03d.wav
这种方式是先指定格式为segment,再用-segment_options把timestamps参数传递给segment格式处理器。
补充说明
-c copy是直接复制音频流,不会重新编码,速度快还不会损失质量;output%03d.wav会生成output000.wav(0-60秒)、output001.wav(60-150秒)、output002.wav(150秒到结尾)三个文件,如果只想分割成两个文件,把timestamps改成60就行,这样会生成0-60秒和60秒到结尾的两个文件。
内容的提问来源于stack exchange,提问作者Kai
相关产品推荐
相关产品推荐

