我有一个 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
选项不正确。