一种H264帧中提取SPS和PPS的方法及装置.pdf

上传人:b*** 文档编号:1684711 上传时间:2018-07-04 格式:PDF 页数:17 大小:767.65KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510197273.4

申请日:

2015.04.23

公开号:

CN104796765A

公开日:

2015.07.22

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):H04N 21/44申请日:20150423|||公开

IPC分类号:

H04N21/44(2011.01)I; H04N21/84(2011.01)I

主分类号:

H04N21/44

申请人:

天脉聚源(北京)教育科技有限公司

发明人:

张金良

地址:

100007北京市东城区安定门东大街28号雍和大厦E座8层

优先权:

专利代理机构:

北京尚伦律师事务所11477

代理人:

张亮

PDF下载: PDF下载
内容摘要

本发明公开了一种H264帧中提取SPS和PPS的方法及装置,用以在发送视频之前,将视频描述信息发送给远程教学对端,从而实现对端能正常播放视频的目的。所述方法包括:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;根据NAL单元的NAL头信息,定位序列参数集SPS和图像参数集PPS的NAL单元的位置;根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。该方法在远程教学中,能正常解码及播放对端传输来的视频。

权利要求书

权利要求书1.  一种H264帧中提取SPS和PPS的方法,其特征在于,包括如下步骤:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;根据NAL单元的NAL头信息,定位序列参数集SPS和图像参数集PPS的NAL单元的位置;根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。2.  如权利要求1所述的一种H264帧中提取SPS和PPS的方法,其特征在于,所述同步码为4字节的0x00 00 00 01。3.  如权利要求1或2所述的一种H264帧中提取SPS和PPS的方法,其特征在于,所述根据NAL单元的NAL头信息,定位SPS的NAL单元的位置的方法为:判断当前NAL头是否为0x67,是则该NAL单元为SPS的NAL单元,并记录该NAL单元的位置为SPS的NAL单元的位置;否则不是SPS的NAL单元。4.  如权利要求3所述的一种H264帧中提取SPS和PPS的方法,其特征在于,所述根据NAL单元的NAL头信息,定位PPS的NAL单元的位置的方法为:判断当前NAL头是否为0x68,是则该NAL单元为PPS的NAL单元,并记录该NAL单元的位置为PPS的NAL单元的位置;否则不是PPS的NAL单元。5.  一种H264帧中提取SPS和PPS的装置,其特征在于,包括:NAL单元信息获取模块、NAL头获取模块、位置获取模块和保存模块;所述NAL单元信息获取模块,用于从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置,并将信息发送给所述NAL头获取模块;所述NAL头获取模块,用于接收所述NAL单元信息获取模块发来的NAL单元的数目N及每个NAL单元开始位置,并根据每个NAL单元开始位置,遍历N个NAL单元的NAL头,并将NAL头信息发送给所述位置获取模块;所述位置获取模块,用于接收所述NAL头获取模块发来的NAL头信息,定位SPS和PPS的NAL单元的位置,并将该信息发送给所述保存模块;所述保存模块,用于根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。6.  如权利要求5所述的一种H264帧中提取SPS和PPS的装置,其特征在于,所述位置获取模块包括SPS位置获取模块和PPS位置获取模块;所述SPS位置获取模块,接收所述NAL头获取模块发来的NAL头信息,定位SPS的NAL单元的位置,并将该位置发送给所述保存模块;所述PPS位置获取模块,接收所述NAL头获取模块发来的NAL头信息,定位PPS的NAL单元的位置,并将该位置发送给所述保存模块。7.  如权利要求6所述的一种H264帧中提取SPS和PPS的装置,其特征在于,所述SPS位置获取模块包括SPS判定单元和SPS位置记录单元;所述SPS判定单元,用于判断当前NAL头是否为0x67,是则判定该NAL单元为SPS的NAL单元,并向SPS位置记录单元发送第一通知消息,否则不是SPS的NAL单元;所述SPS位置记录单元,用于根据所述第一通知消息,将当前NAL单元的位置记录为SPS的NAL单元的位置,并将SPS的NAL单元的位置发送给所述保存模块。8.  如权利要求6或7所述的一种H264帧中提取SPS和PPS的装置,其特征在于,所述PPS位置获取模块包括PPS判定单元和PPS位置记录单元;所述PPS判定单元,用于判断当前NAL头是否为0x68,是则判定该NAL单元为PPS的NAL单元,并向SPS位置记录单元发送第二通知消息,否则不是PPS的NAL单元;所述PPS位置记录单元,用于根据所述第二通知消息,将当前NAL单元的位置记录为PPS的NAL单元的位置,并将PPS的NAL单元的位置发送给所述保存模块。

说明书

说明书一种H264帧中提取SPS和PPS的方法及装置
技术领域
本发明涉及视频技术领域,特别涉及一种H264帧中提取SPS和PPS的方法及装置。
背景技术
随着互联网技术的发展,互联网应用越来越多,形式也越来越多样化。由于远程教学具有方便快捷、费用低廉等特点,越来越受到广大师生的喜爱,通过互联网,学生可以方便的获取教学资料进行学习。为了提高远程教学互动性,目前师生间常采用视频和语音方式在互联网上进行交流。如学生端与教师端建立连接后,学生端开启摄像头录制视频,并实时上传给教师端。但是由于是直接传输视频流,而不是视频文件,所以没有文件头,也就没有视频的描述信息。教师端在没有描述信息的情况下是无法对视频进行解码和播放的。故为了使教师端能对视频进行解码和播放,必须在发送视频之前,将视频描述信息发送给教师端,以使教师端更够根据该视频描述信息生成视频的文件头,从而达到正常播放视频的目的。另外由于H264具有很高的数据压缩比,在网络传输过程中所要带宽更少,故广泛的用于网络视频传输。
综上所述,急需一种从H264帧中提取视频描述信息的方法,在发送视频之前,将视频描述信息发送给远程教学对端,从而达到对端能正常播放视频的目的。
发明内容
本发明提供一种H264帧中提取SPS和PPS的方法及装置,用以在发送视频之前,将视频描述信息发送给远程教学对端,从而实现对端能正常播放视频 的目的。
本发明提供一种H264帧中提取SPS和PPS的方法,包括:
从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;
根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;
根据NAL单元的NAL头信息,定位序列参数集SPS和图像参数集PPS的NAL单元的位置;
根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。
本发明实施例的一些有益效果可以包括:
根据H264帧结构,从该帧中提取出视频的描述信息SPS和PPS数据,并在传输视频流数据到远程教学的对端前,将该视频描述信息发送给对端,对端根据收到的视频描述信息,从而可以正常的播放接收到的视频流数据。
在一个实施例中,所述同步码为4字节的0x00 00 00 01。
该实施例中,通过简单的查找H264帧中的同步码0x00 00 00 01,即可以定位到每个NAL单元的位置信息,然后根据NAL单元的NAL头信息,获取SPS和PPS数据并保存,待传输给远程教学的对端。
在一个实施例中,所述根据NAL单元的NAL头信息,定位SPS的NAL单元的位置的方法为:判断当前NAL头是否为0x67,是则该NAL单元为SPS的NAL单元,并记录该NAL单元的位置为SPS的NAL单元的位置;否则不是SPS的NAL单元。
该实施例中,因为SPS的NAL单元的NAL头为0x67,因此,若NAL单元的NAL头为0x67,则该NAL单元为SPS的NAL单元。从而达到获取SPS数据的目的。
在一个实施例中,所述根据NAL单元的NAL头信息,定位PPS的NAL单元的位置的方法为:判断当前NAL头是否为0x68,是则该NAL单元为PPS 的NAL单元,并记录该NAL单元的位置为PPS的NAL单元的位置;否则不是PPS的NAL单元。
该实施例中,因为PPS的NAL单元的NAL头为0x68,因此,若NAL单元的NAL头为0x68,则该NAL单元为PPS的NAL单元。从而达到获取PPS数据的目的。
本发明还提供一种H264帧中提取SPS和PPS的装置,包括:NAL单元信息获取模块、NAL头获取模块、位置获取模块和保存模块;
所述NAL单元信息获取模块,用于从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置,并将信息发送给所述NAL头获取模块;
所述NAL头获取模块,用于接收所述NAL单元信息获取模块发来的NAL单元的数目N及每个NAL单元开始位置,并根据每个NAL单元开始位置,遍历N个NAL单元的NAL头,并将NAL头信息发送给所述位置获取模块;
所述位置获取模块,用于接收所述NAL头获取模块发来的NAL头信息,定位SPS和PPS的NAL单元的位置,并将该信息发送给所述保存模块;
所述保存模块,用于根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。
在一个实施例中,所述位置获取模块包括SPS位置获取模块和PPS位置获取模块;
所述SPS位置获取模块,接收所述NAL头获取模块发来的NAL头信息,定位SPS的NAL单元的位置,并将该位置发送给所述保存模块;
所述PPS位置获取模块,接收所述NAL头获取模块发来的NAL头信息,定位PPS的NAL单元的位置,并将该位置发送给所述保存模块。
在一个实施例中,所述SPS位置获取模块包括SPS判定单元和SPS位置记录单元;
所述SPS判定单元,用于判断当前NAL头是否为0x67,是则判定该NAL 单元为SPS的NAL单元,并向SPS位置记录单元发送第一通知消息,否则不是SPS的NAL单元;
所述SPS位置记录单元,用于根据所述第一通知消息,将当前NAL单元的位置记录为SPS的NAL单元的位置,并将SPS的NAL单元的位置发送给所述保存模块。
在一个实施例中,所述PPS位置获取模块包括PPS判定单元和PPS位置记录单元;
所述PPS判定单元,用于判断当前NAL头是否为0x68,是则判定该NAL单元为PPS的NAL单元,并向SPS位置记录单元发送第二通知消息,否则不是PPS的NAL单元;
所述PPS位置记录单元,用于根据所述第二通知消息,将当前NAL单元的位置记录为PPS的NAL单元的位置,并将PPS的NAL单元的位置发送给所述保存模块。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中一种H264帧中提取SPS和PPS的方法的流程图;
图2为本发明实施例一中提供一种H264帧中提取SPS的方法的流程图;
图3为本发明实施例二中提供一种H264帧中提取PPS的方法的流程图;
图4为本发明实施例一中一种H264帧中提取SPS和PPS的装置的结构示 意图;
图5为本发明实施例中位置获取模块的结构示意图;
图6为本发明实施例中SPS位置获取模块的结构示意图;
图7为本发明实施例中PPS位置获取模块的结构示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为本发明实施例中一种H264帧中提取SPS和PPS的方法的流程图。如图1所示,该方法包括以下步骤S101-S104:
步骤S101:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置。
H264的功能分为两层:视频编码层(VCL,Video Coding Layer)和网络提取层(NAL,Network Abstraction Layer)。VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输或存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。
每个NAL单元包括一个原始字节序列负荷(RBSP,Raw Byte Sequence Payload)、一组对应于视频编码的NAL头信息。NAL头信息(一个字节)定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据。H264的编码视频序列包括一系列的NAL单元。但是由于NAL单元中没有给出其长度信息,实际的传输、存储系统需要增加额外的头(同步码)实现各个NAL单元的定界。从而能根据同步码确定NAL单元的数目N及每个NAL单元开始位置。
步骤S102:根据每个NAL单元开始位置,遍历N个NAL单元的NAL头。
其中,NAL头信息定义了RBSP单元的类型,占用了一个字节的长度,按照比特自高至低排列可以表示如下:0AABBBBB。其中,AA用于表示该NAL是否可以丢弃(有无被其后的NAL参考),00b表示没有参考作用,可丢弃, 如B slice、SEI等,非零——包括01b、10b、11b——表示该NAL不可丢弃,如SPS、PPS、I Slice、P Slice等。
目前,常用的NAL头的取值如下:
0x67(SPS);0x68(PPS);0x65(IDR);0x61(non-IDR Slice);0x01(B Slice);0x06(SEI);0x09(AU Delimiter)。
步骤S103:根据NAL单元的NAL头信息,定位序列参数集SPS和图像参数集PPS的NAL单元的位置。
其中,定位序列参数集SPS包含的是针对一连续编码视频序列的参数,如标识符seq_parameter_set_id、帧数及POC的约束、参考帧数目、解码图像尺寸和帧场编码模式选择标识等等。
图像参数集PPS对应的是一个序列中某一幅图像或者某几幅图像,其参数如标识符pic_parameter_set_id、可选的seq_parameter_set_id、熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等等。
根据SPS对应的NAL头为0x67和PPS对应的NAL头为0x68,即可定位二者的NAL单元的位置。
步骤S104:根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。
本发明实施例提供的技术方案,根据H264帧结构,从该帧中提取出视频的描述信息SPS和PPS数据,并在传输视频流数据到远程教学的对端前,将该视频描述信息发送给对端,对端根据收到的视频描述信息,从而可以正常的播放接收到的视频流数据。
在一个实施例中,同步码为4字节的0x00 00 00 01。
其中,AVI文件和MPEG TS广播流采取的是字节流的语法格式,即在NAL单元之前增加0x00 00 00 01的同步码,则从AVI文件或MPEG TS PES包中读出的一个H.264视频帧以下面的形式存在:
00 00 00 01 06...00 00 00 01 67...00 00 00 01 68...00 00 00 01 65...
其中,00 00 00 01 06...为SEI信息,00 00 00 01 67...为SPS,00 00 00 01 68...为PPS,00 00 00 01 65...为IDR Slice。
本发明实施例提供的技术方案,通过简单的查找H264帧中的同步码0x00 00 00 01,即可以定位到每个NAL单元的位置信息,然后根据NAL单元的NAL头信息,获取SPS和PPS数据并保存,待传输给远程教学的对端。
实施例一
图2为本发明实施例一中提供一种H264帧中提取SPS的方法的流程图,包括:
步骤S201:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;
步骤S202:根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;
步骤S203:判断当前NAL头是否为0x67,是则该NAL单元为SPS的NAL单元,并记录该NAL单元的位置为SPS的NAL单元的位置;否则不是SPS的NAL单元;
步骤S204:根据SPS的NAL单元的位置,将SPS数据保存在第一缓存中。
本发明实施例一提供的技术方案,因为SPS的NAL单元的NAL头为0x67,因此,若NAL单元的NAL头为0x67,则该NAL单元为SPS的NAL单元。从而达到获取SPS数据的目的。
实施例二
如图3为本发明实施例二中提供一种H264帧中提取PPS的方法的流程图,包括:
步骤S301:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;
步骤S302:根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;
步骤S303:判断当前NAL头是否为0x68,是则该NAL单元为PPS的NAL单元,并记录该NAL单元的位置为PPS的NAL单元的位置;否则不是PPS 的NAL单元;
步骤S304:根据PPS的NAL单元的位置,将PPS数据保存在第二缓存中。
本发明实施例二提供的技术方案,因为PPS的NAL单元的NAL头为0x68,因此,若NAL单元的NAL头为0x68,则该NAL单元为PPS的NAL单元。从而达到获取PPS数据的目的。
综上实施例一和实施例二的伪代码如下:


对应于上述实施例提供的一种H264帧中提取SPS和PPS的方法,本发明实施例还提供一种H264帧中提取SPS和PPS的装置,如图4所示,包括:NAL单元信息获取模块41、NAL头获取模块42、位置获取模块43和保存模块44;
NAL单元信息获取模块41,用于从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置,并将信息发送给NAL头获取模块42;
NAL头获取模块42,用于接收NAL单元信息获取模块41发来的NAL单元的数目N及每个NAL单元开始位置,并根据每个NAL单元开始位置,遍历N个NAL单元的NAL头,并将NAL头信息发送给位置获取模块43;
位置获取模块43,用于接收NAL头获取模块42发来的NAL头信息,定位SPS和PPS的NAL单元的位置,并将该信息发送给保存模块44;
保存模块44,用于根据SPS和PPS的NAL单元的位置,将SPS和PPS数据分别保存在第一缓存、第二缓存中。
在一个实施例中,如图5所示,位置获取模块43包括SPS位置获取模块51和PPS位置获取模块52;
SPS位置获取模块51,接收NAL头获取模块42发来的NAL头信息,定位SPS的NAL单元的位置,并将该位置发送给保存模块44;
PPS位置获取模块52,接收NAL头获取模块42发来的NAL头信息,定位PPS的NAL单元的位置,并将该位置发送给保存模块44。
在一个实施例中,如图6所示,SPS位置获取模块51包括SPS判定单元 61和SPS位置记录单元62;
SPS判定单元61,用于判断当前NAL头是否为0x67,是则判定该NAL单元为SPS的NAL单元,并向SPS位置记录单元62发送第一通知消息,否则不是SPS的NAL单元;
SPS位置记录单元62,用于根据第一通知消息,将当前NAL单元的位置记录为SPS的NAL单元的位置,并将SPS的NAL单元的位置发送给保存模块44。
在一个实施例中,如图7所示,PPS位置获取模块52包括PPS判定单元71和PPS位置记录单元72;
PPS判定单元71,用于判断当前NAL头是否为0x68,是则判定该NAL单元为PPS的NAL单元,并向SPS位置记录单元72发送第二通知消息,否则不是PPS的NAL单元;
PPS位置记录单元72,用于根据第二通知消息,将当前NAL单元的位置记录为PPS的NAL单元的位置,并将PPS的NAL单元的位置发送给保存模块44。
本发明实施例提供的一种H264帧中提取SPS和PPS的装置,根据H264帧结构,从该帧中提取出视频的描述信息SPS和PPS数据,并在传输视频流数据到远程教学的对端前,将该视频描述信息发送给对端,对端根据收到的视频描述信息,从而可以正常的播放接收到的视频流数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

一种H264帧中提取SPS和PPS的方法及装置.pdf_第1页
第1页 / 共17页
一种H264帧中提取SPS和PPS的方法及装置.pdf_第2页
第2页 / 共17页
一种H264帧中提取SPS和PPS的方法及装置.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种H264帧中提取SPS和PPS的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种H264帧中提取SPS和PPS的方法及装置.pdf(17页珍藏版)》请在专利查询网上搜索。

本发明公开了一种H264帧中提取SPS和PPS的方法及装置,用以在发送视频之前,将视频描述信息发送给远程教学对端,从而实现对端能正常播放视频的目的。所述方法包括:从H264帧开始位置开始,根据同步码确定NAL单元的数目N及每个NAL单元开始位置;根据每个NAL单元开始位置,遍历N个NAL单元的NAL头;根据NAL单元的NAL头信息,定位序列参数集SPS和图像参数集PPS的NAL单元的位置;根据SP。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1