是否有用于python的通用二进制协议编解码器库?
有一个很好的java版本- 我曾经听说python也有类似的东西。但我不能提醒你 编辑: 更具体地说,我想有一个工具,可以帮助我创建一些二进制流的编码 编辑2: 我想在这里列出解决方案(感谢Scott提供相关主题) 按我使用它的顺序列出是否有用于python的通用二进制协议编解码器库?,python,binary,protocols,Python,Binary,Protocols,有一个很好的java版本- 我曾经听说python也有类似的东西。但我不能提醒你 编辑: 更具体地说,我想有一个工具,可以帮助我创建一些二进制流的编码 编辑2: 我想在这里列出解决方案(感谢Scott提供相关主题) 按我使用它的顺序列出 (很棒的文档,我会选择) (乍一看很神秘) (python标准) python在标准库中有pack/unpack,可用于解释二进制数据并将其映射到结构 请参阅此处的“11.3.使用二进制数据记录布局” 或者在这里您尝试过该模块吗?(完全披露:我写的) 它
- (很棒的文档,我会选择)
- (乍一看很神秘)
- (python标准)
from bitstring import ConstBitStream
s = ConstBitStream(filename='somefile.h264')
profile_idc = s.read('uint:8')
# Multiple reads in one go returns a list:
constraint_flags = s.readlist('4*uint:1')
reserved_zero_4bits = s.read('bin:4')
level_idc = s.read('uint:8')
seq_parameter_set_id = s.read('ue')
if profile_idc in [100, 110, 122, 244, 44, 83, 86]:
chroma_format_idc = s.read('ue')
if chroma_format_idc == 3:
separate_colour_plane_flag = s.read('uint:1')
bit_depth_luma_minus8 = s.read('ue')
bit_depth_chroma_minus8 = s.read('ue')
...
一些可能相关的问题:另一个相关的问题:看起来像一个有趣的图书馆。当我有时间的时候,我会对它进行更广泛的研究。实际上,比特流应该被分割成以
0x000001
或0x00000001
开始代码为前缀的NAL单元。您的代码显示了如何直接解析SPS。我将如何使用您的库进行翻译?@slhck:我们首先搜索一个字节对齐的0x000001s.find('0x000001',bytealigned=True)
。但我无法用S.O.的答案编写完整的H.264解码器,所以它只是为了说明问题。当然:)谢谢,我找到了我需要的。我想说的是,我认为所提供的代码可能无法工作,因为在文件的一开始就应该至少有一个0x00前缀。