使用 Python 检查 MPEG 传输流的第一个字节是否为同步字节
Using Python to check if first byte of MPEG transport stream is a sync byte
我正在尝试使用 Python 查看传输流,并读取第一个字节。完成后,我将检查此字节是否为 0x47 以确定传输流是否有效。
这是我试过的代码:
with open("my_ts_file.ts", "rb") as file_object:
byte = file_object.read(1)
if byte == 0x47:
print("Found first sync byte")
print(byte)
else:
print("Not a valid Transport Stream")
print(byte)
所以不管第一个字节是不是0x47,它都应该显示出来。
我在这里遇到的问题是这段代码的输出显示:
Not a valid Transport Stream
b'G'
正如@szatmary 在这里指出的那样: 字母 G 实际上是 0x47(十六进制)的 ASCII 表示。
我如何才能有效地比较本质上相同但以两种不同方式表示的值?
您需要将 0x47
转换为表示使用 chr()
的字符串:
with open("my_ts_file.ts", "rb") as file_object:
byte = file_object.read(1)
if byte == chr(0x47):
print("Found first sync byte")
print(byte)
else:
print("Not a valid Transport Stream")
print(byte)
使用来自 python 的位串模块。
我正在尝试使用 Python 查看传输流,并读取第一个字节。完成后,我将检查此字节是否为 0x47 以确定传输流是否有效。
这是我试过的代码:
with open("my_ts_file.ts", "rb") as file_object:
byte = file_object.read(1)
if byte == 0x47:
print("Found first sync byte")
print(byte)
else:
print("Not a valid Transport Stream")
print(byte)
所以不管第一个字节是不是0x47,它都应该显示出来。
我在这里遇到的问题是这段代码的输出显示:
Not a valid Transport Stream
b'G'
正如@szatmary 在这里指出的那样:
我如何才能有效地比较本质上相同但以两种不同方式表示的值?
您需要将 0x47
转换为表示使用 chr()
的字符串:
with open("my_ts_file.ts", "rb") as file_object:
byte = file_object.read(1)
if byte == chr(0x47):
print("Found first sync byte")
print(byte)
else:
print("Not a valid Transport Stream")
print(byte)
使用来自 python 的位串模块。