You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FFmpeg转换MKV到MOV时如何保留原音频流名称,避免被替换为SoundHandler

FFmpeg转换MKV到MOV时如何保留原音频流名称,避免被替换为SoundHandler

我之前也碰到过一模一样的问题!你试的-metadata:s:a handler_name='' -empty_hdlr_name 1之所以只对第一条音频流生效,是因为FFmpeg里不带索引的-metadata:s:a会把同一个设置应用到所有音频流上,导致后面的流都错误复用了第一条的名称。

要解决这个问题,关键是要针对每一条音频流单独指定元数据规则,通过流索引来区分不同的音频轨道。具体操作如下:

  1. 先确认你的输入MKV里有多少条音频流,可以运行这个命令查看:
ffmpeg -i input_file.mkv

输出里会看到类似Stream #0:a:0Stream #0:a:1这样的条目,数字就是音频流的索引(从0开始)。

  1. 修改你的转换命令,给每条音频流单独添加-metadata:s:a:X handler_name=''参数(X替换成对应流的索引),完整命令示例如下(假设你有2条音频流):
ffmpeg -find_stream_info -probesize 84M -i input_file.mkv \
-map 0:v -map 0:a -map -0:s -codec copy \
-metadata:s:a:0 handler_name='' -metadata:s:a:1 handler_name='' \
-empty_hdlr_name 1 output_file.mov -loglevel error

这样设置后,FFmpeg会为每条音频流单独保留原MKV里的轨道名称,不会再统一替换成默认的SoundHandler了。如果你的音频流更多,只需要按索引依次添加对应的-metadata参数就行。

备注:内容来源于stack exchange,提问作者Franon

火山引擎 最新活动