增加“软”嵌入 mkv 的字幕尺寸

增加“软”嵌入 mkv 的字幕尺寸

我有一些 MKV 文件,里面有 Advanced SubStation Alpha (ASS) 字幕。字幕是“可切换的”,所以它们可能不会“刻录”。

我的目标是——以某种方式——增加这些字幕的字体大小。最好的办法是直接修改 MKV 文件中的字幕流属性(如果这有意义的话?)。(媒体播放器关于字体大小的设置不会有帮助;我会在电视上播放这些 MKV 文件。)这将使我的 HandBrake 转码更容易,因为该程序无法导入除 SRT 之外的任何其他字幕格式。但是,它可以使用 ASS 字幕如果它们嵌入在要转码的文件中。因此,最简单的方法就是保留(直接修改)MKV 中的字幕。

但我甚至不知道从哪里开始……

答案1

好吧,我做到了。这不是最佳方法,但我很着急。下面是我解决问题的方法。

(还,不要忘记安装 mkvtoolnixLinux 用户可以直接从其存储库中提取包,而 Windows 用户可以尝试下载mkvtoolnix官方网站

  1. 运行mkvinfo <mkv filename>并获取字幕索引。
  2. 跑步mkvextract tracks <mkv filename> <subtitle track index>:<mkv filename>.ass
  3. <mkv filename>.ass用文本编辑器替换输出的字体大小。
  4. 跑步mkvmerge -o <new mkv filename> <mkv filename> --language 0:eng <mkv filename>.ass
  5. <new mkv filename>使用转码手刹并在电视上观看转码后的文件。

一个例子使用文件dn-01.mkv

  1. 运行mkvinfo dn-01.mkv后程序会打印出一些关于mkv文件的信息,查找字幕轨道和其对应的编号。请务必使用括号内的数字,因为它是用于的mkvextract。在我的例子中,字幕轨道信息是:

    | + A track
    |  + Track number: 3 (track ID for mkvmerge & mkvextract: 2)
    |  + Track UID: 476285904
    |  + Track type: subtitles
    |  + Enabled: 1
    |  + Default flag: 1
    |  + Forced flag: 0
    |  + Lacing flag: 0
    |  + MinCache: 0
    |  + Timecode scale: 1
    |  + Max BlockAddition ID: 0
    |  + Codec ID: S_TEXT/ASS
    |  + Codec decode all: 1
    |  + CodecPrivate, length 2057
    |  + Language: eng
    
  2. 奔跑mkvextract tracks dn-01.mkv 2:dn-01.ass并等待。

  3. dn-01.ass使用文本编辑器打开,然后更改V4+ Styles文件开头标题下的字体大小。(记得更改全部样式,而不仅仅是Default。)例如:

    Style: Default,Marker Felt,27,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,0
    Style: SIGN,Sand,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,0
    (more)
    

    ... 变成 ...

    Style: Default,Marker Felt,42,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,0
    Style: SIGN,Sand,54,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,0
    (more)
    

    更改完成后保存文件。

  4. 运行mkvmerge -o dn-01-modified.mkv dn-01.mkv --language 0:eng dn-01.ass并等待。该过程完成后,新创建的dn-01-modified.mkv将有一个额外的字幕轨道,其渲染尺寸应比原始字幕轨道更大。

您现在已完成!但我想在电视上观看视频。如果您也想这样做,或者在其他设备上播放,那么:

  1. 使用一些视频转码程序进行转码dn-01-modified.mkv,并使用适合您的目标设备的设置。(不要忘记告诉程序老化如果你的目标设备无法播放 ASS 字幕,请将新添加的字幕轨道添加到视频本身中!)就我而言,我使用了HandBrakeCLI使用以下设置在三星 60 英寸电视上使用。请注意,我正在刻录字幕,因为我的电视不喜欢 ASS 字幕。

    HandBrakeCLI -e x264 -q 20.0 -a 1 -E ffac3 -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mkv --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.0 --subtitle "2" --subtitle-burned 2 -i dn-01-modified.mkv -o dn-01-modified-burned.mkv
    
  2. dn-01-modified-burned.mkv在目标设备上播放转码后的文件。


正如我在一开始所说的:这不是一个最佳过程。事情可以做得更好,但目前我没有时间改进这个过程。对大量视频这样做也不是一件有趣的事;它会变得非常重复。幸运的是,我只需要对几个视频这样做,但在未来,我肯定会有更多需要放大字幕的视频,到那时,我会编写一个 bash 或 python 脚本来自动完成所有操作。

相关内容