如何修改 MP4 电影中音频轨道的语言和标题

如何修改 MP4 电影中音频轨道的语言和标题

问题描述:下载了一部电影,它有日语、国语、粤语、英语四个音频轨道(音轨)。但是在播放器的音轨选择界面中,音轨的名称(ffmpeg 把它叫做 handler_name)是乱码,而音轨的语言标识(ffmpeg 就把它叫做 language)没有标出,如图 1 所示。经过辨认,我确定音轨 0、1、2、3(ffmpeg 默认从 0 开始编号)的语言分别是日语、国语、粤语、英语。

需求:现在我需要准确地标记其语言,如图 2 所示。

修改前:

图 1。 修改前

修改后:

图 2. 修改后

解决办法:用 ffmpeg 修改每条音频轨道的元数据。命令如下:

1
ffmpeg -i "X:\Videos\31-电影\千与千寻 (2021)\千与千寻 (2021) 1080p AC3 JPN CHN YUE ENG.mp4" -map 0 -c copy -metadata:s:a:0 handler_name="日语" -metadata:s:a:1 handler_name="国语" -metadata:s:a:1 language=chi -metadata:s:a:2 handler_name="粤语" -metadata:s:a:2 language=yue -metadata:s:a:3 language=eng -metadata:s:a:3 handler_name="英语" output2.mp4

解释:

  1. -i "X:\Videos\31-电影\千与千寻 (2021)\千与千寻 (2021) 1080p AC3 JPN CHN YUE ENG.mp4":指定输入文件。
  2. -map 0:读取所有轨道,包括视频、音频、内封字幕(如果有的话)。
  3. -metadata:s:a:0 handler_name="日语":把音频轨道 0 的标题设置为“日语”,从图 1 可以看到,这个轨道的语言已经在方括号中标识出来,所以不需要修改语言标识。
  4. -metadata:s:a:1 handler_name="国语" -metadata:s:a:1 language=chi:把音频轨道 0 的标题设置为“日语”,把音频轨道 0 的语言标识设置为汉语(Chinese)。FFmepg 遵守 ISO-639-2 标准,根据此标准,汉语需要用 zho 标识,但保留了 chi 标识与过去的文献兼容。
  5. -metadata:s:a:2 handler_name="粤语" -metadata:s:a:2 language=yue:把音频轨道 0 的标题设置为“粤语”,把音频轨道 0 的语言标识设置为粤语(Cantonese)。ISO-639-2 标准没有收录粤语的代码,ISO-639-3 规定粤语的三字母代码是 yue
  6. -metadata:s:a:1 handler_name="英语" -metadata:s:a:1 language=eng:把音频轨道 0 的标题设置为“英语”,把音频轨道 0 的语言标识设置为英语(English)。
  7. 每修改一项元数据,就需要调用一次 -metadata 参数。
  8. output2.mp4 指定输出文件。

图片版权

题图:https://openclipart.org/detail/284962/nonlinear-video-editing-system-3

头图:Image by Micha Sager from Pixabay


求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”

如何修改 MP4 电影中音频轨道的语言和标题
https://blog.kukmoon.com/c7dea9f9b136/
作者
Kukmoon谷月
发布于
2024年5月16日
许可协议