[英]read a .h264 file
对于您遇到的某些问题,我将很高兴为您提供帮助。
目标:使用python读取.h264文件(我使用ffmpeg将原始位流提取到文件中),并将其保存在某些数据结构中(可能是列表,我很乐意提供建议)。
我想要的是将每个字节(2个六位数),列表或其他一些数据结构提供给我。 但是前进的任何一步都会对我有所帮助。
我的尝试:首先,我尝试阅读我所知道的方式:
with open(path, 'r') as fp:
data = fp.read()
没有工作,只有“。
经过大量更改后,我尝试了其他操作,在网上看到了:
with open(path, 'r') as fp:
hex_list = ["{:02}".format(ord(c)) for c in fp.read()]
仍然有一个空列表。
我会很高兴为您提供帮助。 非常感谢。
编辑 :由于下面的评论,我试图使用'rb'打开,但仍然没有运气。
如果您有一个h264 mp4文件,则可以使用binascii.hexlify()
其打开并获取一个十六进制的字符串表示形式:
import binascii
with open('test.mp4', 'rb') as fin:
hexa = binascii.hexlify(fin.read())
print(hexa[0:1000])
hexa将是一个python bytes
对象,您可以通过执行binascii.unhexlify(hexa)
轻松获取二进制表示形式。 这在空间和时间方面都比将十六进制表示形式存储为list()
字符串的效率更高。 您可以使用索引/切片访问bytes
数组,因此,无论您打算对列表进行什么操作,都可以很好地使用它(它将更快,并且使用更少的内存)。
不过要记住的一件事是从bytes
对象中获取第一个十六进制数字,而不是hexa[0]
,而是hexa[0:1]
。 要获取第一对十六进制数字(字节),请执行: hexa[0:2]
。 第二个字节是hexa[2:4]
等。如文档中hex()
:
由于字节对象是整数序列(类似于元组),因此对于字节对象b,b [0]将是整数,而b [0:1]将是长度为1的字节对象。(这与文本相反字符串,其中索引和切片都会产生长度为1的字符串)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.