MKV格式电影英文字幕轨导出机器翻译

从网上下载了一部外国电影,没有中文字幕,但是有英文字幕。
尝试用ffmpeg导出英文字幕轨,然后利用网络翻译工具,进行机器翻译处理,得到中文字幕轨。
记录一下实验方法,供更多同学参考

实验使用的文件是Civil.War,实验完成后已删除。

名称: Civil.War.2024.2160p.AMZN.WEB-DL.DDP5.1.Atmos.H.265-FLUX.mkv
大小: 12785690114 字节 (11 GiB)
CRC32: A0D2EF12
CRC64: F7FD7DABA8353137
SHA256: 278D63E80C72E9F7995FA866B9FDBB1A71830A69C154AE82511ED9883EB65BAA
SHA1: E30830E1D4E118B02C03B2CD944029E7579E435D
BLAKE2sp: 6E0649724290132E7ECC8A9EC683021FE9A0FD1E2EC11978080204D4A466A1C2

探测字幕轨的编号

首先,要探测字幕轨的位置,可以用ffmpeg或mediainfo或potplayer。

ffmpeg探测字幕轨

ffmpeg命令行代码如下:

ffmpeg -i input.mkv

由于没有输出参数,ffmpeg不会进行转码处理,只会显示出字幕轨的情况。

mediainfo探测字幕轨

如果用mediainfo则会得到以下信息(截取部分)

完整名称                           : Civil.War.2024.2160p.AMZN.WEB-DL.DDP5.1.Atmos.H.265-FLUX\Civil.War.2024.2160p.AMZN.WEB-DL.DDP5.1.Atmos.H.265-FLUX.mkv
格式                             : Matroska
格式版本                           : Version 4
文件大小                           : 11.9 GiB
时长                             : 1 时 48 分
总体码率                           : 15.7 Mb/s
编码程序                           : mkvmerge v79.0 ('Funeral Pyres') 64-bit
编码函数库                          : libebml v1.4.4 + libmatroska v1.7.1

视频
ID                             : 1
格式                             : HEVC
格式/信息                          : High Efficiency Video Coding
格式配置 (Profile)                 : Main@L5@Main
编解码器 ID                        : V_MPEGH/ISO/HEVC
时长                             : 1 时 48 分
码率                             : 14.9 Mb/s
宽度                             : 3 840 像素
高度                             : 2 080 像素
画面比例                           : 1.85:1
原始画面比例                         : 1.85:1
帧率模式                           : 恒定帧率 (CFR)
帧率                             : 23.976 (24000/1001) FPS
色彩空间                           : YUV
色度抽样                           : 4:2:0
位深                             : 8 位
数据密度 [码率/(像素*帧率)]              : 0.078
流大小                            : 11.3 GiB (95%)
语言                             : 英语 (English)
Default                        : 是
Forced                         : 否
色彩范围                           : Limited
色彩原色                           : BT.709
传输特性                           : BT.709
矩阵系数                           : BT.709

音频
ID                             : 2
格式                             : E-AC-3 JOC
格式/信息                          : Enhanced AC-3 with Joint Object Coding
传播名                            : Dolby Digital Plus with Dolby Atmos
编解码器 ID                        : A_EAC3
时长                             : 1 时 48 分
码率模式                           : 恒定码率 (CBR)
码率                             : 768 kb/s
声道数                            : 6 声道
声道格式                           : L R C LFE Ls Rs
采样率                            : 48.0 kHz
帧率                             : 31.250 FPS (1536 SPF)
压缩模式                           : 有损
相对视频的延迟                        : 19 毫秒
流大小                            : 597 MiB (5%)
语言                             : 英语 (English)
服务类别                           : Complete Main
Default                        : 是
Forced                         : 否
复杂度指数                          : 16
动态对象总数                         : 15
音床声道数                          : 1 声道
音床声道配置                         : LFE

文本 #1
ID                             : 3
格式                             : UTF-8
编解码器 ID                        : S_TEXT/UTF8
编解码器 ID/信息                     : UTF-8 Plain Text
时长                             : 1 时 39 分
码率                             : 34 b/s
元素总数                           : 989
流大小                            : 25.4 KiB (0%)
语言                             : 英语 (English)
Default                        : 否
Forced                         : 否

文本 #2
ID                             : 4
格式                             : UTF-8
编解码器 ID                        : S_TEXT/UTF8
编解码器 ID/信息                     : UTF-8 Plain Text
时长                             : 1 时 40 分
码率                             : 39 b/s
元素总数                           : 1139
流大小                            : 28.6 KiB (0%)
标题                             : SDH
语言                             : 英语 (English)
Default                        : 否
Forced                         : 否

文本 #3
ID                             : 5
格式                             : UTF-8
编解码器 ID                        : S_TEXT/UTF8
编解码器 ID/信息                     : UTF-8 Plain Text
时长                             : 1 时 48 分
码率                             : 32 b/s
元素总数                           : 928
流大小                            : 25.9 KiB (0%)
标题                             : Latin American
语言                             : 西班牙语 (Spanish)
Default                        : 否
Forced                         : 否

可以看到mkv文件包含三个字幕轨,只需要提取任意一个进行机器翻译即可。

其中,第二个字幕轨是SDH(Subtitles for Deaf and Hard-of-hearing)是失聪及听障者字幕,包含详细的环境描述,如果在地铁上看电影可以使用这个版本的字幕。。

提取外语字幕轨

用FFMPEG可以方便的将字幕轨提取出来,

ffmpeg -i input.mkv -map 0:s:3 subtitle.srt

提取完成后,FFMPEG在命令行给出截取部分提示信息部分,如下:

Stream mapping:
  Stream #0:4 -> #0:0 (subrip (srt) -> subrip (srt))
Press [q] to stop, [?] for help
size=      58kB time=01:48:41.37 bitrate=   0.1kbits/s speed=82.8x
video:0kB audio:0kB subtitle:26kB other streams:0kB global headers:0kB muxing overhead: 125.698326%

不涉及重编码,还以为会秒出结果,实际花了1分钟时间。
可能是需要对MKV文件中各个block?进行依次提取字幕轨内容,所以速度比较慢,只能达到82倍速。
PS,相比于重编码视频stream已经是快上天了。

这里选择了第三个字幕轨0:s:3,结果对应的是西班牙语字幕。
无所谓,丢给WPS机器翻译救急而已,不再重新导出字幕轨了。

机器翻译

得到的字幕轨是subtitle.srt格式的,实际是txt文本格式,直接改后缀或拖到notepad打开即可。

因为买了WPS会员,所以尝试用WPS做全文翻译。
如果没有WPS会员,用百度翻译也不错。
另外,现在AI很流行,可以试试AI翻译。

WPS全文翻译只对word格式有效,把notepad打开的文档中全部复制到一个*.doc文件中。

由于,WPS翻译全文需要消耗会员免费翻译页数,字幕txt行数比较多,直接反应需要消耗页数130+(超过免费的50页)。

所以,把字体改到最小的5pt,并设置每页显示3栏,压缩doc格式文件的页数到9页。

然后,一键“全文翻译”,顺利的完成全文翻译,复制翻译后的内容,保存为Chinese.txt,然后重命名Chinese.srt,就得到一个中文字幕了。

自己观看测试用,就不去做重新封装了,直接在播放器中选择外部字幕Chinese.srt,熟悉的中文字幕就来了!

LowB机翻版,哈哈哈