使用 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 的位串模块。