如何读取 MXF 文件中的 MPEG2VideoDescriptor?

How to read the MPEG2VideoDescriptor in an MXF file?

下面是 MPEG2VideoDescriptor 的十六进制转储:

06 0e 2b 34 02 53 01 01 0d 01 01 01 01 01 51 00
83 00 00 f3 3c 0a 00 10 a3 be 51 b2 00 05 e7 11
bf 82 21 97 f7 a0 14 ed 30 06 00 04 00 00 00 02
30 01 00 08 00 00 ea 60 00 00 03 e9 80 00 00 04
01 c9 c3 80 30 04 00 10 06 0e 2b 34 04 01 01 02
0d 01 03 01 02 04 61 01 32 15 00 01 05 32 0e 00
08 00 00 00 10 00 00 00 09 32 0d 00 10 00 00 00
02 00 00 00 04 00 00 00 1a 00 00 00 00 32 0c 00
01 00 32 08 00 04 00 00 02 d0 32 09 00 04 00 00
05 00 32 02 00 04 00 00 02 d0 32 03 00 04 00 00
05 00 32 01 00 10 06 0e 2b 34 04 01 01 03 04 01
02 02 01 04 03 00 33 02 00 04 00 00 00 02 33 08
00 04 00 00 00 01 33 03 00 01 04 33 01 00 04 00
00 00 08 33 0b 00 01 00 33 07 00 02 00 00 33 04

前16个字节:
06 0e 2b 34 02 53 01 01 0d 01 01 01 01 01 51 00(UID)
接下来的 4 个字节是 BER 大小:
83 00 00 f3(0xf3 字节长)
接下来的 4 个字节:
3c 0a 00 10(0x3c0a 表示实例 UUID,0x0010 是大小)
然后是UUID:
a3 be 51 b2 00 05 e7 11 bf 82 21 97 f7 a0 14 ed
接下来的 4 个字节:
30 06 00 04(0x3006 表示链接的轨道 ID,0x0004 是大小)
接下来的 4 个字节是链接轨道 ID:00 00 00 02
接下来的 4 个字节:30 01 00 08(0x3001 表示采样率,0x0008 是大小)
下面的8个字节实际上是帧率分子和分母:
0000ea60 == 60000 和 000003e9 == 1001。 现在我们有了 bold 部分:80 00 00 04 .

谁能解释一下这是什么意思?

接下来的四个字节是01 c9 c3 80,肯定是比特率(30000000),但我怎么知道呢?

编辑:
80 00 00 04是不是代表以下意思:
0x8000 是一个动态标签。根据 SMPTE 337,标签 0x8000-0xFFFF 是动态分配的。 0x0004 是大小(4 个字节)。如果那是真的,我怎么知道下面的 4 个字节 01 c9 c3 80 实际上是比特率?可以是任何东西,或者?

首先您必须了解本地标签的工作原理。 本地标记 0x8000 及以上是用户定义的。 你得看看header分区的primer pack。 入门包将本地标签转换为全球 UL,这可能是也可能不是供应商特定的。

将引物包视为 2 字节本地标签和 16 字节 UL 之间的翻译table。