如何区分H.264视频流的I frame 和 B frame
发布时间:2011-06-27 19:30:26 文章来源:www.iduyao.cn 采编人员:星星草
怎么区分H.264视频流的I frame 和 B frame? 怎么区分H.264视频流的I frame 和 P frame? 我是新手,前些天自己看那H.264规范文档及其他资料寻找答案时, 还有几个概念的关系还没能理解清楚,望达人指点一二: NAL、Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带)、2(编码条带数据分割块A)、3(编码条带数据分割块B)、4(编码条带数据分割块C)、5(IDR图像的编码条带)种类型 与 Slice种的三种编码模式:I_slice、P_slice、B_slice 还有frame的3种类型:I frame、P frame、 B frame之间有什么映射关系么? 最后,NAL nal_unit_type中的6(SEI)、7(SPS)、8(PPS)属于什么帧呢? 不好意思,文档看得头晕晕的了,问题比较多~~~ PS:偶是新人 没多少分,要是哪位达人帮忙下的话 我就给我所有的分,好像只有十几分------解决方案-------------------- 1 frame的数据可以分为多个slice. 每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice 数据没有依赖关系。 NAL 是用来将编码的数据进行大包的。 比如,每一个slice 数据可以放在NAL 包中。 I frame 是自己独立编码,不依赖于其他frame 数据。 P frame 依赖 I frame 数据。 B frame 依赖 I frame, P frame 或其他 B frame 数据。 建议楼主看一点视频编码的书吧, 自己看标准还是很难懂的。
------解决方案--------------------
直接给你代码吧 :) ////////////////////////////////////////////////////////////////////////// // H.264 NAL type enum H264NALTYPE{ H264NT_NAL = 0, H264NT_SLICE, H264NT_SLICE_DPA, H264NT_SLICE_DPB, H264NT_SLICE_DPC, H264NT_SLICE_IDR, H264NT_SEI, H264NT_SPS, H264NT_PPS, }; int H264GetNALType(LPVOID pBSBuf, const LONG nBSLen) { if ( nBSLen < 5 ) // 不完整的NAL单元 return H264NT_NAL; UINT8* pBS = (UINT8 *)pBSBuf; ULONG nType = pBS[4] & 0x1F; // NAL类型在固定的位置上 :) if ( nType <= H264NT_PPS ) return nType; return 0; }
------解决方案-------------------- 其中 H264NT_SLICE_IDR 是关键帧,H264NT_SLICE 是P帧
------解决方案-------------------- 一个frame是可以分割成多个Slice来编码的,而一个Slice编码之后被打包进一个NAL单元,不过NAL单元除了容纳Slice编码的码流外,还可以容纳其他数据,比如序列参数集SPS。
------解决方案--------------------
1、NAL、Slice与frame意思及相互关系 NAL指网络提取层,里面放一些与网络相关的信息 Slice是片的意思,264中把图像分成一帧(frame)或两场(field),而帧又可以分成一个或几个片(Slilce);片由宏块(MB)组成。宏块是编码处理的基本单元。 2、NAL nal_unit_type中的1(非IDR图像的编码条带)、2(编码条带数据分割块A)、3(编码条带数据分割块B)、4(编码条带数据分割块C)、5(IDR图像的编码条带)种类型 与 Slice种的三种编码模式:I_slice、P_slice、B_slice NAL nal_unit_type 里的五种类型,代表接下来数据是表示啥信息的和具体如何分块。 I_slice、P_slice、B_slice 表示I类型的片、P类型的片,B类型的片.其中I_slice为帧内预测模式编码;P_slice为单向预测编码或帧内模式;B_slice 中为双向预测或帧内模式。 3、还有frame的3种类型:I frame、P frame、 B frame之间有什么映射关系么? I frame、P frame、 B frame关系同 I_slice、P_slice、B_slice,slice和frame区别在问题1中已经讲明白。 4、最后,NAL nal_unit_type中的6(SEI)、7(SPS)、8(PPS)属于什么帧呢? NAL nal_unit_type 为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)不属于啥帧的概念。表示后面的数据信息为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)。
------解决方案--------------------
探讨 H.264视频流是以NAL单元传送的。。。但在一个NAL单元里面,可能既存放I-Slice(P-Slice或B-Slice),同事也可能存放图像的其他信息 那么 是不是说 I frame, P frame,B frame是把收到的NAL单元中的VCL的信息先提取出,然后按内容进行I、P、B frame分类? 而我们只能通过NAL nal_unit_type来判别NAL单元中数据的类型哈~~~ 呵呵 不好意思 还没有完全理解~~
友情提示: 信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
DSHOW push
推模式,ConnectDirect 的,为什么我一直反回错误
下级级用的是HAALI的一个东西,用CMemStream拉模式的时候是可以连接的
...
ffmpeg编码后视频速度不正确,质量也不好,求助,求助,求助,求助啊
对采集到得摄像头图像进行编码保存,发现得到的视频质量不好,而且速度不...
请问怎么在live555中接收jpeg
请问,我现在想接收一个服务器发送的jpeg 不知道怎么用live555做一个客户端, 接收它并显示。
请问应...
XP SP3 YUV420 的fiter依赖 在线等答案……
链接时媒体类型为WMMEDIASUBTYPE_I420
有的XP可以播放出来
有的就不行,请问不能播放...
如何获取通过麦克风来获取当前说话的音量?
使用Wave系统API采集音频输入的数据,当数据缓存区满了后,收到消息取得数据后,如何根据这里...
RFC3984 有没有完整的中文版本呢?
搜了几个 都是一半英文一半中文的。哎 郁闷!
------解决方案--------------------
英文的凑合...
介绍一个学习directshow和com、atl技术的网站
有一个学习directshow和com、atl技术的网站,还可以下视频教程,共享给大家: http://www...
攻击帖:jrtplib、live555是个垃圾,刚开始搞流媒体就用这玩意就是找s
不解释~
来丢我砖头吧~~
我分太多了用不完~ 支持的散分~~~
...
50分,寻找《Visual C++音频/视频处理技术及工程实践》的随书光盘?
急于使用其中的几个例程。若哪位好心人能够提供,非常感谢!!我的QQ:52...
h264的高宽比怎么获取?
我看标准里面只有样点的高宽比啊。
还有,bit rate可以读出来吗?
------解决方案--------------------
是要...