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

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

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

最佳答案

可以用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]

关于python - 如何使用h.264引用软件在Python中提取运动矢量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30074120/

10-11 20:44