我正在尝试解码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/