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

时间:2019-11-08 17:15:28

标签: mpeg2-ts

我需要能够检查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

1 个答案:

答案 0 :(得分:1)

无法从该数据包中分辨出来。但是,它很可能是IDR。我说是有可能的,因为查看NALU,我可以看到澳元export default ({images})=>{ return( <> <CardItem style={styles.moldura}> <CardItem style={styles.itemCard}> <ImageBackground source={{uri:images[0]}} style={styles.cardImageMenor} > </ImageBackground> <ImageBackground source={{uri:images[1]}} style={styles.cardImageMenor} /> </CardItem> </CardItem> </> ); } ,SPS 00 00 00 01 09,PPS 00 00 00 01 67然后是SEI 00 00 00 01 68

但是,SEI会占用数据包的其余字节,您将需要继续从该PID读取数据包,直到对下一个NALU进行细化并查看其IDR。