如何使用h.264参考软件在Python中提取运动矢量

时间:2015-05-06 10:27:48

标签: python video vector h.264 motion

我试图解码h.264视频,以便我可以访问运动矢量。我找到了参考软件:

http://iphome.hhi.de/suehring/tml/download/

但是我在python中实现这个很难解析出我想要的相关数据。解决这个问题的好方法是什么?

1 个答案:

答案 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]