网络提取层(NAL network abstraction layer )和视频编码层(VCL video coding layer)
H264有严格的规范,以00 00 00 01分割之后的下一个字节就是NALU类型,用来描述此帧的意义。
NALU类型:
(1)第1位禁止位,值为1表示语法出错
(2)第2~3位为参考级别
(3)第4~8为是nal单元类型
以通常的首帧来看:
前四个字节是分隔符;
103 = 0x67; 0x67 &0x0f = 7 说明以上祯为sps;
接下来的第二帧是实际意义上的关键帧(I帧):
101 = 0x65; 0x65& 0x0f = 5 说明这个祯是
int value = buf[4] & 0x0f;//nalu, 5是I帧, 7是sps 8是pps.
0,未使用
1,不分区,非IDR图像的片
2,片分区A 3,片分区B 4,片分区C
5,IDR图像的片段
6,补充增强信息单元(SEI)
7,序列参数集sps
8,图像参数集pps
9,分界符 10,序列结束符 11,流结束符 12填充 13..23保留 24..31未使用
ps:Gop是指多少秒一个I帧。
带宽,码流,在线人数之间的关系:
带宽 / (码流 * 8) = 同时在线人数
文件大小 = 时间×码率/8
一个视频文件的大小为5.86M,播放时长为3分7秒:
1:该文件对应的码流就是
5.86 * 1024 * 1024 * 8 / (3 * 60 + 7) =262872.95657754bps
2:10M独享带宽能支撑的同时在线人数
10* 1024 * 1024 / 262872.95657754 =39.889078498294
3:支撑1000人同时在线的系统最少需要的带宽数为
262872* 1000 / (1024 * 1024) = 250.69427490234M