форматирование AVC / H.264 mdat - PullRequest
0 голосов
/ 29 ноября 2018

Может кто-нибудь сказать мне или указать мне раздел спецификации, который ясно демонстрирует, как из элементарного потока с серией NALU, как они должны быть записаны в ISO BMFF mdat?

Iпри просмотре примеров и другого кода я вижу что-то вроде: AUD, SPS, PPS, SEI, VideoSlice, AUD и т. д. и т. д.

Вещи, которые мне не совсем понятны:

  1. Если SPS и PPS также хранятся вне диапазона в AVCC, требуются ли они в mdat?
  2. Если они требуются в mdat, когда и где они должны быть записаны?например, непосредственно перед IDR?
  3. Каковы требования для AUD?
  4. Если я генерирую размеры выборки для транка, рассчитывается ли это?В примере, который я работаю для воссоздания первого сэмпла в стволе, размер 22817, однако, если я посмотрю на первый сэмпл в mdat, префикс размера NALU будет 22678. Значение в транке, как представляется, является размером всехNALU + размеры до и включая первый образец (см. Мой пример ниже)

>

1 0016E405 (1500165) - box.Size
2 6D646174 (mdat) - box.Type
3 00000002 (2) NAL Size
4 0910 - (2) AUD @ 5187
5 00000025 (37)
6 27640020 AC248C0F 0117EF01 10000003 00100000 078E2800 0F424001 E84EF7B8 0F844229 C0 (37) @ 5193 SPS
7 00000004 (4)
8 28DEBCB0 (4) PPS
9 0000000B (11)
10 06000781 36288029 67C080 (? SEI ?)
11 0000000C (12)
12 06010700 00F00000 03020480 (? SEI is type 6)
13 0000002D (45) @ 5269
14 060429B5 00314741 393403CA FFFC8080 FA0000FA 0000FA00 00FA0000 FA0000FA 0000FA00 00FA0000 FA0000FF 80 (SEI ??)
15 00005896 (22678)
16 25888010 02047843 00580010 08410410 0002….. 22678 bytes video @ 5322

1 Ответ

0 голосов
/ 29 ноября 2018

Если SPS и PPS также хранятся вне диапазона в AVCC, требуются ли они в mdat?

Нет

Если они требуютсяв мдате когда / где они должны быть написаны?например, непосредственно перед IDR?

Да, если вы решите включить их, но нет никаких оснований для

Что требуется для AUD?

Они являются необязательными

Если я генерирую размеры выборки для транка, будет ли вычисление для этого?

Количество байтов в блоке доступа(AU, он же кадр).Который может содержать более одного NALU.SPS / PPS / SEI / AUD все учитывается в размере AU.4-байтовый размер, добавленный к каждому NALU, также учитывается в размере AU, записанном в транке.

bytes
    4 | 3 00000002 (2) NAL Size
    2 | 4 0910 - (2) AUD @ 5187
    4 | 5 00000025 (37)
   37 | 6 27640020 AC248C0F 0117EF01 10000003 00100000 078E2800 0F424001 E84EF7B8 0F844229 C0 (37) @ 5193 SPS
    4 | 7 00000004 (4)
    4 | 8 28DEBCB0 (4) PPS
    4 | 9 0000000B (11)
   11 | 10 06000781 36288029 67C080 (? SEI ?)
    4 | 11 0000000C (12)
   12 | 12 06010700 00F00000 03020480 (? SEI is type 6)
    4 | 13 0000002D (45) @ 5269
   45 | 14 060429B5 00314741 393403CA FFFC8080 FA0000FA 0000FA00 00FA0000 FA0000FA 0000FA00 00FA0000 FA0000FF 80 (SEI ??)
    4 | 15 00005896 (22678)
22678 | 16 25888010 02047843 00580010 08410410 0002….. 22678 bytes video @ 5322
------| 
22817 | <- bytes total
...