You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFmpeg复制多音频流及截取多音轨.m2ts文件片段的问题

没问题,我来帮你解决FFmpeg复制多音频流以及截取.m2ts片段的问题!

FFmpeg复制多音频流及截取.m2ts片段的解决方案

核心关键:用-map明确指定要保留的音频流

FFmpeg默认只会自动选择一个音频流(通常是输入文件中的第一个音频流),所以要保留多个音频流,必须通过-map参数明确告诉它要包含哪些流。

1. 复制整个文件的所有音频流

如果你想完整复制输入的.m2ts文件,同时保留所有音频流(包括视频、字幕等),可以用这个命令:

ffmpeg -i input.m2ts -c:v copy -c:a copy -map 0 output.m2ts
  • -map 0:表示复制输入文件(编号为0)的所有流(视频、音频、字幕等)
  • -c:v copy和-c:a copy:直接复制视频和音频流,不进行重新编码,速度快且无质量损失

如果只想保留视频和所有音频流(忽略字幕),可以调整-map参数:

ffmpeg -i input.m2ts -c:v copy -c:a copy -map 0:v -map 0:a output.m2ts

2. 截取.m2ts片段并保留多音频流

要截取片段同时保留所有音频流,只需在基础复制命令上加上时间参数(-ss起始时间、-t时长或-to结束时间):

示例1:从第10秒开始,截取30秒的片段

ffmpeg -ss 00:00:10 -i input.m2ts -t 00:00:30 -c:v copy -c:a copy -map 0:v -map 0:a output_clip.m2ts

示例2:从第10秒截取到第40秒(总时长30秒)

ffmpeg -ss 00:00:10 -to 00:00:40 -c:v copy -c:a copy -map 0:v -map 0:a output_clip.m2ts

注意:处理.m2ts的额外优化

有些.m2ts文件有特殊的时间戳结构,截取后可能出现播放异常,这时可以加上-copyts参数保留原始时间戳:

ffmpeg -ss 10 -i input.m2ts -t 30 -c copy -map 0 -copyts output_clip.m2ts

3. 复制指定的几个音频流

如果你不需要所有音频流,只想保留特定的几个(比如第1和第3个音频流,FFmpeg的流索引从0开始),可以这样写:

ffmpeg -i input.m2ts -c:v copy -c:a copy -map 0:v -map 0:a:0 -map 0:a:2 output.m2ts
  • -map 0:a:0:选择输入文件的第1个音频流(索引0)
  • -map 0:a:2:选择输入文件的第3个音频流(索引2)

为什么你之前只能复制单个音频流?

因为FFmpeg的默认行为是自动选择一个音频流(优先级通常是第一个),如果不手动用-map指定,它就只会保留那一个。只要加上-map 0:a(所有音频流)或者指定具体的音频流索引,就能实现多音频流的复制啦!

内容的提问来源于stack exchange,提问作者Edison von Myosotis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:12:02