给定以下字符串:
00:00:03:13 9420 9454 5bcb 45d9 c24f c152 c449 cec7 94f2 c1ce c420 434f cdd0 d554 4552 20ce 4f49 d345 d35d
如何将其转换为文本?
pycaption是我找到的一个库。
pip install pycaption
并尝试解析您的样本:
from pycaption import SCCReader
input = '00:00:03:13 9420 9454 5bcb 45d9 c24f c152 c449 cec7 94f2 c1ce c420 434f cdd0 d554 4552 20ce 4f49 d345 d35d'
contents = SCCReader().read(input.decode('utf-8'))
contents.get_captions('en-US')
你会得到错误:
pycaption.exceptions.CaptionReadNoCaptions: CaptionReadNoCaptions((u'empty caption file',))
这是因为SCC不仅包含编码文本,它还包含命令。前 2 个字节
9420
表示“开始弹出字幕”。为了正确显示文本,需要有尾部 942f
(字幕结束)。但你的样本中缺少它。我认为您没有粘贴以下部分。同时,SCC文件的第一行应该是版本格式。让我们在示例中添加 2 行:
input = '''Scenarist_SCC V1.0
00:00:03:13 9420 9454 5bcb 45d9 c24f c152 c449 cec7 94f2 c1ce c420 434f cdd0 d554 4552 20ce 4f49 d345 d35d
00:00:04:00 942f
'''
那么输出将是:
[u'00:00:04.037 --> 00:00:00.000\n[KEYBOARDING\nAND COMPUTER NOISES]']
要获取纯文本,需要将十六进制代码转换为字母。
Example: 5bcb 45d9 >>translates to>> "[KEY"
5b - "["
cb - "K"
45 - "E"
d9 - "Y"
此外,还有像 9420 这样的控制代码。那不是文本。
要查找字母的翻译表,请查看此处:https://github.com/mantas-done/subtitles/blob/v1.0.14/src/Code/Converters/SccConverter.php#L843
在稍高一点的地方还有一个控制代码表,您在解析文本时可以跳过该表。