如何使用 ffmpeg 向 mkv 容器添加字体?

如何使用 ffmpeg 向 mkv 容器添加字体?

我有一个 mkv 容器中的视频,其中的字幕需要额外的字体,我有 .ttf 格式的所需字体。

我如何将它们添加到 mkv 容器中?

答案1

附加单个字体:

ffmpeg -i input.mkv -map 0 -c copy -attach font.ttf -metadata:s:t mimetype=application/x-truetype-font output.mkv

附加两种字体和XML文件:

ffmpeg -i input.mkv -map 0 -c copy -attach font.ttf -attach anotherfont.ttf -attach file.xml -metadata:s:t:0 mimetype=application/x-truetype-font -metadata:s:t:1 mimetype=application/x-truetype-font -metadata:s:t:2 mimetype=text/xml output.mkv
  • -map 0. 选择全部流。否则默认流选择行为为每个流类型选择 1 个流。请参阅-map选项文档FFmpeg Wiki:地图
  • -c copy启用流复制模式仅重新多路复用并避免重新编码。
  • -attach将附件添加到输出文件。
  • -metadata mimetype=...设置 mimetype 元数据。您必须为 Matroska 输出的每个附件设置一个 mimetype。上面的两个示例假设input.mkv没有附件。

如果出现错误:

Attachment stream has no mimetype tag and it cannot be deduced from the codec id.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

那么你要么忘记设置 mimetype,要么你的流说明符-metadata选项不正确。

相关内容