Как идентифицировать кадр IDR из пакета видео - PullRequest
0 голосов
/ 08 ноября 2019

Мне нужно иметь возможность проверять пакеты 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 Ответ

1 голос
/ 08 ноября 2019

Невозможно узнать из этого пакета. Однако, ОЧЕНЬ вероятно, что это РДЭ. Я говорю, что это вероятно, потому что, глядя на NALU, я вижу AUD 00 00 00 01 09, SPS 00 00 00 01 67 PPS 00 00 00 01 68, затем SEI 00 00 01 06

Однако SEI берет оставшиеся байтыпакет, Вам нужно будет продолжить чтение пакетов с этого PID, пока вы не оштрафуете следующий NALU и посмотрите, является ли он IDR.

...