如何从视频数据包中识别IDR帧



我需要能够检查ts数据包(查看视频PID 481(并确定数据包是否包含IDR帧。我的理解是,我需要寻找NAL单元的开始代码,然后寻找其他代码来表示它是IDR帧的开始。请有人澄清一下好吗?

下面是一个数据包的例子,我认为它是IDR帧,但需要能够从有效载荷数据中证明它:

* Packet 2
---- TS Header ----
PID: 481 (0x01E1), header size: 12, sync: 0x47
Error: 0, unit start: 1, priority: 0
Scrambling: 0, continuity counter: 1
Adaptation field: yes (8 bytes), payload: yes (176 bytes)
Discontinuity: 1, random access: 1, ES priority: 0
PCR: 0x000000013A5
---- PES Header ----
Stream id: 0xE0 (Video 0)
PES packet length: 0 (unbounded)
---- Full TS Packet Content ----
47 41 E1 31 07 D0 00 00 00 08 7E E5 00 00 01 E0 00 00 84 C0 0A 31 00 05
E5 CD 11 00 05 AD 8D 00 00 00 01 09 10 00 00 00 01 67 64 00 29 AC D9 40
78 04 4F DE 02 94 04 04 05 00 00 03 00 01 00 00 03 00 32 E6 80 00 F4 24
00 04 F5 8A 49 30 0F 8B 16 CB 00 00 00 01 68 FA A7 CB 00 00 01 06 00 05
95 6C 60 E4 85 80 00 00 01 06 05 FF FF F5 DC 45 E9 BD E6 D9 48 B7 96 2C
D8 20 D9 23 EE EF 78 32 36 34 20 2D 20 63 6F 72 65 20 31 34 38 20 2D 20
48 2E 32 36 34 2F 4D 50 45 47 2D 34 20 41 56 43 20 63 6F 64 65 63 20 2D
20 43 6F 70 79 72 69 67 68 74 20 32 30 30 33 2D 32 30 31 36

无法从该数据包中辨别。然而,它很可能是IDR。我说这很可能,因为查看NALU,我可以看到AUD00 00 00 01 09、SPS00 00 00 01 67、PPS00 00 00 01 68,然后是SEI00 00 01 06

然而,SEI会占用数据包的剩余字节,您需要继续从该PID读取数据包,直到您对下一个NALU进行微调,并查看它是否为IDR。

最新更新