MKV 格式视频投屏到电视无法显示简中字幕怎么办?
现象描述
同一个 MKV 视频,在电脑(操作系统为 Windows 10)上观看,有四种语言的字幕可选:英文、繁中、简中、日文。
但是,在 Windows 10 资源管理器中,右击这个 MKV 视频文件,选择“播放到设备”,将视频投屏到机顶盒,结果,只显示英文字幕,而且不可更改。
原因分析
Windows 10 的“播放到设备”功能本质上是用 DLNA 投屏,把多媒体文件本身传输到电视(机顶盒)。
但是,DLNA 不支持外挂字幕,只支持封装字幕或硬字幕(注意:这两种字幕能否显示,取决于电视或机顶盒内置的播放器是否支持,如果后者根本不支持字幕,那就没办法了)。
MKV 格式是一个容器,容器可能包含多个字幕。用 MediaInfo 打开这个 MKV 文件,可以看出,它有 6 个轨道:1 个视频,1 个音频,4 个字幕(文本 #1
—文本 #4
)。
文本 #1
的轨道编号(ID)是 3,语言是英语。文本 #2
的 ID 是 4,文本 #3
的 ID 是 5……
我提出一个假设:我的机顶盒无法让用户自由选择字幕,而是默认选择第一个字幕,即轨道编号(ID)最小的字幕。这个 MKV 视频中的英语字幕的 ID 是 3,比其他语种字幕的 ID 都小,所以投屏到机顶盒只会显示英语字幕。
那么,如果我把简体中文字幕的 ID 改成 3,投屏到机顶盒,会不会显示简中字幕呢?
操作步骤
这个 MKV 视频有两个中文字幕:文本 #2
和 文本 #3
。经过测试,我确认文本 #3
是简体中文。
用 MKVToolNix 的混流器打开这个 MKV 视频文件。将第 5 个轨道(第三个字幕)拖动到“FLAC”之下,第一个字幕(英文字幕)之上。然后把它的语言修改成“zh-CN”(zh-CN 是简体中文)。最后点击“开始混流”,生成新的 MKV 文件。
右击新生成的 MKV 视频文件,选择“播放到设备”,将视频投屏到电视(机顶盒),顺利显示简体中文字幕。
用 MediaInfo 打开新成的 MKV 视频文件,发现文本 #1
的“语言”变成了“Chinese (China)”。
注意事项
修改原文本 #3
的 Default 或 Forced 属性,无效。这说明我的机顶盒内置播放器只认字幕轨道 ID,不认上述两个属性。但是 PotPlayer 和加装了第三方解码器 K-Lite Codec Pack 的 Windows Media Player 就认,它们会优先显示 Default 属性值为 True 的字幕。
批量转换
借助 MKVToolNix 的“混流器”→“显示命令行”功能,获取对单个视频文件进行操作的命令,然后与 Windows 命令提示符的 for
命令嵌套在一起,实现对多个视频文件的批量操作。
新建一个批处理文件(convert.bat
),把它保存到 MKV 视频文件所在的文件夹。批处理文件的内容如下:
1 |
|
这个批处理文件对同一个文件夹中的所有的 MKV 视频文件完成以下工作:
- 把
文本 #3
的语言设置为 zh-CN(简体中文),并把它的 Default 属性设置为 True。 - 把
文本 #1
(英文字幕)的 Default 属性设置为 False。 - 把
文本 #3
的 ID 改成 3,也就是把它的顺序排在 FLAC 和英文字幕之间。 - 把生成的新 MKV 文件放在
output
子文件夹中。
转换之前的视频文件在 PotPlayer 中的表现:
转换后生成的新视频文件在 PotPlayer 中的表现:
图片版权
题图:该图片由Gerd Altmann在Pixabay上发布