格式化 AVC/H.264 mdat

formatting an AVC/H.264 mdat

任何人都可以告诉我或指出规范中清楚地说明如何将具有一系列 NALU 的基本流写入 ISO BMFF mdat 的部分吗?

我可以看到样本和其他代码,我应该有类似的东西:AUD、SPS、PPS、SEI、VideoSlice、AUD 等等

我不完全清楚的事情:

  1. 如果 SPS 和 PPS 也存储在 AVCC 的带外,它们是否需要在 mdat 中?
  2. 如果 mdat 中需要它们 when/where 应该写吗?例如就在 IDR 之前?
  3. 澳元的要求是什么?
  4. 如果我正在为 trun 生成样本大小,是为此计算的吗?在示例中,我正在努力重新创建 trun 中的第一个样本,其大小为 22817,但是如果我查看 mdat 中的第一个样本,NALU 大小前缀为 22678。trun 中的值似乎是所有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

If the SPS and PPS are also stored out of band in the AVCC are they required in the mdat?

没有

If they are required in the mdat when/where should they be written? e.g. just prior to an IDR?

是的,如果您选择包括它们,但没有理由

What is the requirement for AUDs?

它们是可选的

If I am generating sample sizes for the trun is the calcuation for this?

访问单元(AU,又名帧)中的字节数。其中可能包含不止一个NALU。 SPS/PPS/SEI/AUD 全部计入 AU 大小。每个 NALU 前缀的 4 字节大小也计入 trun 中记录的 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