我试图解码h.264视频,以便我可以访问运动矢量。我找到了参考软件:
http://iphome.hhi.de/suehring/tml/download/
但是我在python中实现这个很难解析出我想要的相关数据。解决这个问题的好方法是什么?
答案 0 :(得分:1)
可以在Python中解析H.264,但它通常不是这项工作的最佳工具。如果你确实想要使用它,你应该从H.264标准开始,而不是参考软件,尽管双手都很有用。
正如我所说,Python并不适合解码视频,所以没有太多可以帮助你。我过去曾用它来获取或更改奇数参数,并编写了一个模块(bitstring)来帮助。有一个解析documentation中的H.264结构的例子:
此示例创建一个类,用于解析属于H.264视频标准的结构。
class seq_parameter_set_data(object):
def __init__(self, s):
"""Interpret next bits in BitString s as an SPS."""
# Read and interpret bits in a single expression:
self.profile_idc = s.read('uint:8')
# Multiple reads in one go returns a list:
self.constraint_flags = s.readlist('4*uint:1')
self.reserved_zero_4bits = s.read('bin:4')
self.level_idc = s.read('uint:8')
self.seq_parameter_set_id = s.read('ue')
if self.profile_idc in [100, 110, 122, 244, 44, 83, 86]:
self.chroma_format_idc = s.read('ue')
if self.chroma_format_idc == 3:
self.separate_colour_plane_flag = s.read('uint:1')
self.bit_depth_luma_minus8 = s.read('ue')
self.bit_depth_chroma_minus8 = s.read('ue')
# etc.
>>> s = BitStream('0x6410281bc0')
>>> sps = seq_parameter_set_data(s)
>>> print(sps.profile_idc)
100
>>> print(sps.level_idc)
40
>>> print(sps.reserved_zero_4bits)
0b0000
>>> print(sps.constraint_flags)
[0, 0, 0, 1]