如何向字幕添加元数据?

如何向字幕添加元数据?

我正在尝试将语言元数据添加到现有的外部 .ass 字幕中,但似乎不起作用。我正在使用ffmpeg -i input.ass -map 0 "-metadata:s:s:0" "language=eng" "-metadata:s:s:0" "handler_name=English output.ass",它显示了这个

Input #0, ass, from 'input.ass':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Subtitle: ass
Output #0, ass, to 'output.ass':
  Metadata:
    encoder         : Lavf58.45.100
    Stream #0:0(eng): Subtitle: ass (ssa)
    Metadata:
      handler_name    : English
      encoder         : Lavc58.91.100 ssa

但最终什么都没有改变。不久前我使用过类似的命令将元数据添加到 mkv 文件中的字幕流中,效果很好,所以我不明白为什么它不能直接与 .ass 一起使用。

答案1

如果您正在处理单个字幕文件,则不必使用map选项。如果您正在处理具有多个流的文件,即具有多个音频和/或字幕轨道的视频,它真的很有用,但对于单个流文件来说没有必要。对于您的用例,这应该足够了:ffmpeg -i input.ass -metadata language="eng" output.ass。另外,一般来说,请注意如何在参数中使用引号,您将这两个参数放在引号中"handler_name=English output.ass",整个内容将被解释为文件名。以破折号开头的参数不应该用引号引起来,但如果参数接受参数,则引号可用于防止单词拆分。

相关内容