技术领域
[0001] 本
发明涉及直播推流领域,尤其涉及一种推送HEVC视频的方法和装置。
背景技术
[0002] 随着互联网的发展,音视频直播业务越来越火爆,音视频直播技术的应用范围也越来越广。直播业界很大比例的传输协议用的是RTMP(Real Time Messaging Protocol,实时消息传输协议)和HTTP-FLV(HTTP英文全称:Hyper Text Transfer Protocol,中文全称:超文本传输协议),承载的数据绝大部分是AVC(Advanced Video Coding,高级
视频编码)+AAC(Advanced Audio Coding,高级音频编码)。这两种传输协议都是基于标准FLV封装数据包的,然而FLV(Flash Video,一种音视频封装格式)标准已经多年未更新(大约2010年后一直未更新),其只支持有限的几种较老的视频编码格式,暂不支持后来出现的更高效的视频编码格式,如HEVC。由于HEVC的压缩效率能比AVC高近50%,如果能采用HEVC做直播的
视频流,将大大节省流量,降低服务端的带宽资源,提升用户体验。
发明内容
[0003] 针对上述技术问题,本发明
实施例提供了一种推送HEVC视频的方法和装置。
[0004] 本发明实施例的第一方面提供一种推送HEVC视频的方法,应用于推流端,所述方法包括:
[0005] 采集视频流;
[0006] 基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签,其中,所述扩展FLV格式为基于标准FLV格式获得;
[0007] 将所述HEVC视频流打包为FLV视频标签;
[0008] 通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的HEVC视频流。
[0009] 可选地,所述基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签之前,还包括:
[0010] 对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式。
[0011] 可选地,所述对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式,包括:
[0012] 当发送onMetaData数据时,将标准FLV格式的视频标签中,视频
解码器类型标识videocodecid字段设置为第一预设值,并将视频标签头VideoTagHeader中的解码器编号CodeID字段设置为第二预设值;
[0013] 所述第一预设值、所述第二预设值用于标识视频流为HEVC视频流,且所述第一预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频解码器类型标识videocodecid字段设置的数值大小不相等,所述第二预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频标签头VideoTagHeader中的解码器编号CodeID字段设置的数值大小不相等。
[0014] 可选地,所述第一预设值与所述第二预设值大小相等。
[0015] 可选地,所述方法还包括:
[0017] 对所述音频流进行编码,获得AAC音频流;
[0018] 基于标准FLV格式,将所述AAC音频流打包为FLV视频标签;
[0019] 通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的AAC音频流。
[0020] 本发明实施例第二方面提供了一种推送HEVC视频的装置,应用于推流端,所述装置包括:
[0022] HEVC编码模块,用于基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签,其中,所述扩展FLV格式为基于标准FLV格式获得;
[0023] 打包模块,用于将所述HEVC视频流打包为FLV视频标签;
[0024] 发送模块,用于通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的HEVC视频流。
[0025] 可选地,所述装置还包括:
[0026] 格式扩展模块,用于在基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签之前,对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式。
[0027] 可选地,所述格式扩展模块在对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式时,具体用于:
[0028] 当发送onMetaData数据时,将标准FLV格式的视频标签中,视频解码器类型标识videocodecid字段设置为第一预设值,并将视频标签头VideoTagHeader中的解码器编号CodeID字段设置为第二预设值;
[0029] 所述第一预设值、所述第二预设值用于标识视频流为HEVC视频流,且所述第一预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频解码器类型标识videocodecid字段设置的数值大小不相等,所述第二预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频标签头VideoTagHeader中的解码器编号CodeID字段设置的数值大小不相等。
[0030] 可选地,所述第一预设值与所述第二预设值大小相等。
[0031] 可选地,所述装置还包括:
[0032] 音频采集模块,用于采集音频流;
[0033] AAC编码模块,用于对所述音频流进行编码,获得AAC音频流;
[0034] 所述打包模块还用于基于标准FLV格式,将所述AAC音频流打包为FLV视频标签;
[0035] 所述发送模块还通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的AAC音频流。
[0036] 本发明实施例提供的技术方案中,通过将HEVC视频流打包为FLV视频标签的方法,能节省推流端的流量,降低延迟。
附图说明
[0037] 图1为本发明一实施例中的推送HEVC视频的方法的方法流程示意图;
[0038] 图2为本发明另一实施例中的推送HEVC视频的方法的方法流程示意图;
[0039] 图3为本发明一实施例中的推送HEVC视频的装置的结构
框图;
[0040] 图4为本发明另一实施例中的推送HEVC视频的装置的结构框图;
[0041] 图5为本发明另一实施例中的推送HEVC视频的装置的结构框图。
具体实施方式
[0042] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 需要说明的是,在不冲突的情况下,下述实施例可以进行组合。
[0044] 本发明实施例的推送HEVC视频的方法和装置应用于推流端,该推流端可以为直播视频的主播端,也可以为其他。
[0045] 图1为本发明一实施例中的推送HEVC视频的方法的方法流程示意图;请参见图1,本发明实施例的推送HEVC视频的方法可以包括如下步骤:
[0046] 步骤S101:采集视频流;
[0047] 本实施例的推流端可以包括用于采集视频流的视频采集模块,如摄像头、图像
传感器。当然,在其他实施例中,推流端与外部视频采集模块相连接,推流端可以获取外部视频采集模块采集的视频流。
[0048] 步骤S102:对所述视频流进行编码,获得HEVC视频流;
[0049] 通过视频采集模块采集原始
像素数据,原始像素数据的数据量非常大,不适合直接传输,因此,需要通过一些图像编码
算法压缩,如AVC、HEVC等进行编码压缩后再进行传输。由于HEVC的压缩效率能比AVC高近50%,因此,步骤S102将步骤S101采集的视频流编码成HEVC视频流,能够大大节省流量,降低服务端的带宽资源,提升用户体验。
[0050] 可以采用
软件编码器或者
硬件编码器对视频流进行编码,获得HEVC视频流。本实施例中,采用软件编码器或者硬件编码器将视频采集模块采集的原始像素数据编码为HEVC
帧数据。
[0051] 步骤S103:基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签,其中,所述扩展FLV格式为基于标准FLV格式获得;
[0052] 本
申请是参照标准FLV对AVC的封装来扩展对HEVC的封装的,其中,基于标准FLV格式获得扩展FLV格式可以由推流端在线或离线执行,也可以由其他设备执行,并在获得扩展FLV格式后将扩展FLV格式发送给推流端。
[0053] 本实施例中,基于标准FLV格式获得扩展FLV格式由推流端在线执行,具体地,推流端基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签之前,对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式。
[0054] 可选地,对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式的实现过程可以包括:当发送onMetaData数据(在线
媒体流数据)时,将标准FLV格式的视频标签中,视频解码器类型标识videocodecid字段设置为第一预设值,并将视频标签头VideoTagHeader中的解码器编号CodeID字段设置为第二预设值。
[0055] 所述第一预设值、所述第二预设值用于标识视频流为HEVC视频流,且所述第一预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频解码器类型标识videocodecid字段设置的数值小不相等,所述第二预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频标签头VideoTagHeader中的解码器编号CodeID字段设置的数值大小不相等。
[0056] 采用标准FLV格式打包AVC视频流时的视频标签中,视频解码器类型标识videocodecid字段设置的数值为7,视频标签头VideoTagHeader中的解码器编号CodeID字段设置的数值也为7,本申请实施例中,第一预设值、第二预设值不等于7即可。
[0057] 可选地,所述第一预设值与所述第二预设值大小相等,例如,第一预设值、第二预设值均为12;应当理解的是,第一预设值与第二预设值的大小也可以不相等,具体可以根据需要设置。
[0058] 步骤S104:通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的HEVC视频流。
[0059] 具体地,通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的HEVC视频流至
服务器端。客户端可以通过服务器端观看推送的HEVC视频流。
[0060] 通过将HEVC视频流打包为FLV视频标签的方法,能节省推流端(即主播端)的流量,降低延迟。
[0061] 图2为本发明另一实施例中的推送HEVC视频的方法的方法流程示意图;请参见图2,所述推送HEVC视频的方法还可以包括如下步骤:
[0062] 步骤S201:采集音频流;
[0063] 本实施例的推流端可以包括用于采集音频流的音频采集模块,如声卡等。当然,在其他实施例中,推流端与外部音频采集模块相连接,推流端可以获取外部视频采集模块采集的音频流。
[0064] 步骤S202:对所述音频流进行编码,获得AAC音频流;
[0065] 可以采用软件编码器或者硬件编码器对音频流进行编码,获得AAC音频流。
[0066] 步骤S203:基于标准FLV格式,将所述AAC音频流打包为FLV视频标签;
[0067] 基于标准FLV格式,将所述AAC音频流打包为FLV视频标签为
现有技术,本发明对此不作具体说明。
[0068] 步骤S204:通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的AAC音频流。
[0069] 本实施例中,通过RTMP协议或HTTP-FLV协议同步发送打包为FLV视频标签后的HEVC视频流和打包为FLV视频标签后的AAC音频流。
[0070] 上面对本发明实施例中的推送HEVC视频的方法进行了描述,下面对本发明实施例中的推送HEVC视频的装置进行描述。
[0071] 图3为本发明一实施例中的推送HEVC视频的装置的结构框图;请参见图3,本发明实施例的推送HEVC视频的装置可以包括视频采集模块110、HEVC编码模块120、打包模块130和发送模块140。
[0072] 其中,视频采集模块110,用于采集视频流;
[0073] HEVC编码模块120,用于基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签,其中,所述扩展FLV格式为基于标准FLV格式获得;
[0074] 打包模块130,用于将所述HEVC视频流打包为FLV视频标签;
[0075] 发送模块140,用于通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的HEVC视频流。
[0076] 可选地,请参见图4,所述推送HEVC视频的装置还包括格式扩展模块150。
[0077] 格式扩展模块150,用于在基于扩展FLV格式,将所述HEVC视频流打包为FLV视频标签之前,对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式。
[0078] 可选地,所述格式扩展模块150在对标准FLV格式进行扩展,得到能够打包HEVC视频流的扩展FLV格式时,具体用于:
[0079] 当发送onMetaData数据时,将标准FLV格式的视频标签中,视频解码器类型标识videocodecid字段设置为第一预设值,并将视频标签头VideoTagHeader中的解码器编号CodeID字段设置为第二预设值;
[0080] 所述第一预设值、所述第二预设值用于标识视频流为HEVC视频流,且所述第一预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频解码器类型标识videocodecid字段设置的数值大小不相等,所述第二预设值与所述标准FLV格式打包AVC视频流时的视频标签中,视频标签头VideoTagHeader中的解码器编号CodeID字段设置的数值大小不相等。
[0081] 可选地,所述第一预设值与所述第二预设值大小相等。
[0082] 可选地,请参见图5,所述推送HEVC视频的装置还包括音频采集模块160和AAC编码模块170。
[0083] 其中,音频采集模块160,用于采集音频流;
[0084] AAC编码模块170,用于对所述音频流进行编码,获得AAC音频流;
[0085] 所述打包模块130还用于基于标准FLV格式,将所述AAC音频流打包为FLV视频标签;
[0086] 所述发送模块140还通过RTMP协议或HTTP-FLV协议发送打包为FLV视频标签后的AAC音频流。
[0087] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行
修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。