h.264+Directshow的问题

2020-02-14 21:22栏目:竞技宝app
TAG:

大家好,请问遵照帕杰罗FC3984的点子封装了h264之后,在接到端重新整合成NALU并交由解码端实行编码应该如何是好?把分片的NALU去fu头组合在一同,总的NALU再加三个nalu头?然后把全副NALU在fillbuffer里填充mediasample,末了sourceFilter—CoveAVCVideoDecode就足以了么?

前写过生机勃勃篇文章,剖析了h264使用rtp进行封包的格式介绍:RTP封装h264。但内部好像平素不把拆分以至一些索要小心的事态说驾驭,因而这里做补偿,也当作本人的备忘(本人纪念力好像不太好)。

http://blog.csdn.net/dxpqxb/article/details/7631304

 

H264以NALU(NAL unit)为单位来辅助理编辑码数据在依赖分组调换技能网络中传输。

  1. 至于时间戳,须求小心的是h264的采集样板率为90000HZ,由那时间戳的单位为1(秒卡塔尔/90000,因此风华正茂旦当前视频帧率为25fps,那日子戳间距恐怕说增量应为3600,要是帧率为30fps,则增量为3000,依此类推。
  2. 有关h264拆包,遵照FU-A情势注解:
    1)第一个FU-A包的FU indicator:F应该为当下NALU头的F,而NHighlanderI应为近日NALU头的NCR-VI,Type则等于28,表明它是FU-A包。FU header生成方法:S = 1,E = 0,Murano = 0,Type则等于NALU头中的Type。
    2)后续的N个FU-A包的FU indicator和第多少个是完全相似的,固然不是最后叁个包,则FU header应为:S = 0,E = 0,奥德赛 = 0,Type等于NALU头中的Type。
    3)最终三个FU-A包FU header应为:S = 0,E = 1,汉兰达 = 0,Type等于NALU头中的Type。

    所以总括便是:同三个NALU分包厚的FU indicator头是完全后生可畏致的,FU header独有S以至E位有分别,分别标识开首和终结,它们的RTP分包的类别号应该是种种依次增加的,何况它们的光阴戳必须豆蔻年华律,而负载数据为NALU包去掉1个字节的NALU头后对结余数量的拆分,这一点很首要,你能够认为NALU头被拆分成了FU indicator和FU header,所以不再供给1字节的NALU头了。

  3. 至于SPS以至PPS,配置帧的传输作者使用了首发SPS,再发送PPS,并动用相通的大运戳,只怕遵照正规时间戳增量再大概组包发送的款式管理日常都可以,看播放器怎么解码了,其余提一下,假使我们接纳vlc举行播报的话,能够在sdp文件中安装SPS以致PPS,这样就可以毫无发送它们了。
  4. 应用VLC播放时,sdp文件中的分包格局选拔:packetization-mode=1,不然十分。别的sdp里面安装的编码type必得和rtp包中的后生可畏致。

NALU定义了可用于基于分组和依靠比特流系统的主导格式,同一时候给出头消息,从而提供了录制编码和外界世界的接口。

转自

H264编码进度中的三种分歧的数码格局:

 

SODB 数据比特串-->最原始的编码数据,即VCL数据;

类别中的计算

RBSP 原始字节体系载荷-->在SODB的末尾填加了最终比特(RBSP trailing bits 三个bit“1”)若干比特“0”,以便字节对齐;

  (1卡塔尔(قطر‎ FU-A 还原的时候,也是0x00 00 00 01 伊始,无需自个儿额外增添0x00 00 00 01

EBSP 扩大字节种类载荷-->在RBSP基本功上填加了仿校验字节(0X03)它的缘故是: 在NALU加到Annexb上时,要求丰裕每组NALU从前的初叶码StartCodePrefix,要是该NALU对应的slice为风度翩翩帧的发端则用4位字节表示,ox00000001,不然用3位字节表示ox000001(是蓬蓬勃勃帧的一片段)。别的,为了使NALU主体中不饱含与初步码相冲突的,在编码时,每际遇多少个字节一而再再而三为0,就插入一个字节的0x03。解码时将0x03去掉。也叫做脱壳操作。

(2)FU-A 的的分析,start end等数码要剖析好

编码管理进度:

(3)single nal unit 也是以0x00 00 00 01初步,也不供给本人加多分隔符

1. 将VCL层输出的SODB封装成nal_unit,NALU是二个通用封装格式,能够适用于有序字节流方式和IP包交流情势。

2. 针对差别的传递网络(电路交流|包调换),将nal_unit封装成针对不一样互连网的封装格式(比方把nalu封装成rtp包)。


管理进程生龙活虎,VCL数据封装成NALU


版权声明:本文由龙竞技官网发布于竞技宝app,转载请注明出处:h.264+Directshow的问题