elc*_*lch 7 ffmpeg subtitles matroska
我有一个 .ass 文件,我想将它混合到需要额外字体的视频中。
似乎没有将附件从一个文件复制到另一个文件的选项,所以我使用
ffmpeg -dump_attachment:t "" -i input.mkv
Run Code Online (Sandbox Code Playgroud)
但是如何正确地将它们放入新文件中?
我尝试了以下方法:
ffmpeg -i input.mkv -c copy -attach "fontastique.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Franchise - Extra.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Italic.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "Painfresco-Regular.ttf" -metadata:s: mimetype=application/x-truetype-font -attach "SETFIRETOTHERAIN.TTF" -metadata:s: mimetype=application/x-truetype-font -attach "Volter__28Goldfish.ttf" -metadata:s: mimetype=application/x-truetype-font output.mkv
Run Code Online (Sandbox Code Playgroud)
字体似乎已附加,但所有流,包括视频/音频/字幕,将显示一组字体的 mimetype。
Stream #0:1: Audio: aac, 44100 Hz, stereo, fltp (default) (forced)
Metadata:
MIMETYPE : application/x-truetype-font
Stream #0:2: Subtitle: ssa (default) (forced)
Metadata:
MIMETYPE : application/x-truetype-font
Codec 0x18000 is not in the full list.
Stream #0:3: Attachment: unknown_codec
Metadata:
filename : fontastique.ttf
mimetype : application/x-truetype-font
...etc...
Run Code Online (Sandbox Code Playgroud)
字幕找不到字体,因为它仍然显示为播放器的默认字体,而不是附加的字体。
该单证例子说
ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
Run Code Online (Sandbox Code Playgroud)
但我不知道 -metadata:s:2 是什么意思,我以为它会告诉它要附加到哪个流,但是使用-metadata:s:22 作为字幕流失败了
Could not write header for output file #0 (incorrect codec parameters ?): Error number -22 occurred
Run Code Online (Sandbox Code Playgroud)
如何将多种字体正确复制或附加到 MKV 容器以供 .ass 字幕流使用?
小智 8
首先,您实际上可以使用ffmpeg. 该-map选项会覆盖一些默认值并从输入中选择所有流。例子:
ffmpeg -i infile.mkv -map 0 -c copy outfile.mkv
Run Code Online (Sandbox Code Playgroud)
另请参阅FFmpeg Map 文档以获取更多信息。
要将字体附加到现有视频,该-metadata:s:2选项确实是选择流 2,但如果您查看mkvinfo输出,您会看到附件是它们自己的流。它们没有“附加”到字幕流。所以在你的问题的例子中,你会想要-metadata:s:3. 附加附件应使用相应的流说明符。
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |