如何使用FFmpeg修改AC3文件的downmix levels元数据
如何使用FFmpeg修改AC3文件的downmix levels元数据
嘿,我完全懂你碰到的这个坑——你之前用的-metadata参数根本没法搞定AC3文件里的downmix levels,这可不是普通的容器元数据,它是编码在AC3比特流内部的**BSI(比特流信息)**字段里的,得用AC3编码器的专用选项才能改。
你之前的命令错误地把center_mixlev当成了全局元数据参数,正确的做法是把这个参数直接传给AC3编码器,而且必须对音频流重新编码(不能直接复制流,否则BSI字段不会发生变化)。
给你一个能直接生效的命令示例:
ffmpeg -i input.ac3 -c:a ac3 -center_mixlev=0.707 -surround_mixlev=0.707 output.ac3
额外小贴士:
-center_mixlev用来设置中置声道的混音电平,-surround_mixlev对应环绕声道的混音电平,取值范围一般在0.5到1.0之间(0.707是比较常用的标准值)- 要是担心重新编码损失音质,可以加上和原文件一致的比特率参数,比如原AC3文件是640kbps的话,就补充
-b:a 640k,命令变成:ffmpeg -i input.ac3 -c:a ac3 -b:a 640k -center_mixlev=0.707 -surround_mixlev=0.707 output.ac3 - 修改完成后,你可以用
ffmpeg -i output.ac3查看输出信息,找到“Center Mix Level”和“Surround Mix Level”相关字段,就能确认修改是否成功了。
备注:内容来源于stack exchange,提问作者KenJes
相关产品推荐
相关产品推荐

