【问题标题】:Convert SCC (two-byte hexadecimal words) to string将 SCC(两字节十六进制字)转换为字符串
【发布时间】:2015-03-25 11:46:59
【问题描述】:

给定以下字符串:

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

如何将其转换为文本?

【问题讨论】:

  • 开头看起来不像十六进制的 2 个八位字节。
  • 任何特定的编程语言?如果不是,那么language-agnostic 标签可能是合适的。
  • @PaulR 任何语言都可以在这里工作——我更喜欢 python。
  • 比如this?
  • SCC 代表什么?

标签: python string unicode hex


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2022-06-18
    • 2017-08-23
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多