如何修改 MP4 电影中音频轨道的语言和标题
问题描述:下载了一部电影,它有日语、国语、粤语、英语四个音频轨道(音轨)。但是在播放器的音轨选择界面中,音轨的名称(ffmpeg 把它叫做 handler_name)是乱码,而音轨的语言标识(ffmpeg 就把它叫做 language)没有标出,如图 1 所示。经过辨认,我确定音轨 0、1、2、3(ffmpeg 默认从 0 开始编号)的语言分别是日语、国语、粤语、英语。
需求:现在我需要准确地标记其语言,如图 2 所示。
修改前:
修改后:
解决办法:用 ffmpeg 修改每条音频轨道的元数据。命令如下:
1 |
|
解释:
-i "X:\Videos\31-电影\千与千寻 (2021)\千与千寻 (2021) 1080p AC3 JPN CHN YUE ENG.mp4"
:指定输入文件。-map 0
:读取所有轨道,包括视频、音频、内封字幕(如果有的话)。-metadata:s:a:0 handler_name="日语"
:把音频轨道 0 的标题设置为“日语”,从图 1 可以看到,这个轨道的语言已经在方括号中标识出来,所以不需要修改语言标识。-metadata:s:a:1 handler_name="国语" -metadata:s:a:1 language=chi
:把音频轨道 0 的标题设置为“日语”,把音频轨道 0 的语言标识设置为汉语(Chinese)。FFmepg 遵守 ISO-639-2 标准,根据此标准,汉语需要用zho
标识,但保留了chi
标识与过去的文献兼容。-metadata:s:a:2 handler_name="粤语" -metadata:s:a:2 language=yue
:把音频轨道 0 的标题设置为“粤语”,把音频轨道 0 的语言标识设置为粤语(Cantonese)。ISO-639-2 标准没有收录粤语的代码,ISO-639-3 规定粤语的三字母代码是yue
。-metadata:s:a:1 handler_name="英语" -metadata:s:a:1 language=eng
:把音频轨道 0 的标题设置为“英语”,把音频轨道 0 的语言标识设置为英语(English)。- 每修改一项元数据,就需要调用一次
-metadata
参数。 output2.mp4
指定输出文件。
图片版权
题图:https://openclipart.org/detail/284962/nonlinear-video-editing-system-3
头图:Image by Micha Sager from Pixabay
求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”
![](/img/zhi-fu-bao-shou-kuan-ma.png)
![](/img/wei-xin-zan-shang-ma.png)
如何修改 MP4 电影中音频轨道的语言和标题
https://blog.kukmoon.com/c7dea9f9b136/