将 SCC(两字节十六进制字)转换为字符串

问题描述 投票:0回答:2

给定以下字符串:

00:00:03:13 9420 9454 5bcb 45d9 c24f c152 c449 cec7 94f2 c1ce c420 434f cdd0 d554 4552 20ce 4f49 d345 d35d

如何将其转换为文本?

python string unicode hex
2个回答
2
投票

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]']

0
投票

要获取纯文本,需要将十六进制代码转换为字母。

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

在稍高一点的地方还有一个控制代码表,您在解析文本时可以跳过该表。

© www.soinside.com 2019 - 2024. All rights reserved.