技术领域
[0001] 本
发明属于视频技术领域,具体涉及一种国标PS流转RTMP直播流的实时转换方法。
背景技术
[0002] PS流全称是节目流(Program Stream),将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述后的码流。PS流是一种多路复用数字音频、视频等的封装容器,它是一个或多个具有共同的时间基准的PES流合并成一个整体流,主要用于节目存储。其包长不固定,且较长,一旦失去同步信息,接收机无法确定下一包的同步
位置,会造成失步,导致严重的信息丢失。
[0003] RTMP是实时消息传输协议(Real Time Messaging Protocol)。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互
服务器之间进行音视频和数据通信。
[0004] 在互联网直播领域中,主流的直播协议采用的RTMP和HLS等协议,直接在网页上就可观看视频,不需任何
插件,非常的方便。在如今的公共安全领域中主要是通过GB/T-28181进行设备级联,而GB/T-28181中的
媒体流是RTP荷载的PS流,PS流中荷载视频格式是H.264。由于WEB浏览器无法直接支持PS流的点播,用户需要安装插件才可以播放PS流,插件需要适配各种浏览器和各种
操作系统,插件兼容性差,而且用户体验也不好。再者,浏览器公司需要开发相应的插件,需要额外的开发工作量,浪费人
力物力。因此需要一套将国标PS流转为RTMP流的系统,将公共安全领域的视频转到互联网直播领域。
发明内容
[0005] 针对
现有技术的不足,本发明的目的在于提供一种国标PS流转RTMP直播流的实时转换方法,解决了浏览器无法直接播放公共安全领域的
视频流需要使用插件的问题。
[0006] 本发明的目的可以通过以下技术方案实现:
[0007] 一种国标PS流转RTMP直播流的实时转换方法,包括以下步骤:
[0008] S1:首先从收流端口接收荷载PS流的RTP数据包,先查找第一个荷载着PS包头的RTP包,然后将荷载着PS包的RTP包放到PS包缓存中,并检查RTP包的Sequence是否连续,如果不连续则缓存清空;
[0009] S2:对PS包缓存中RTP包解析,同时继续不断接受RTP包放到PS包缓存中,直到接收完一个完整的PS包,将这个完整PS包中荷载的视频数据解析出来,放到视频H.264缓存中;
[0010] S3:将PS包中拆出的H.264数据进行拆
帧,将拆分出的的每一个完整的H.264帧放到帧缓存中;
[0011] S4:将完整的H.264帧打包成RTMP,然后通过URL推流给RTMP流媒体服务器;
[0012] 作为一种优选的技术方案,所述H.264帧包括SPS、PPS、关键帧。
[0013] 作为一种优选的技术方案,WEB浏览器或VLC播放器通过URL向RTMP流媒体服务器拉流进行
视频点播。
[0014] 本发明的有益效果:
[0015] 1、本技术方案提供一种国标PS流转RTMP直播流的实时转换方法,该技术方案使得用户可直接使用WEB浏览器VLC播放器观看公共安全领域的视频,不再需要安装相应的浏览器插件,用户体验好,方便快捷。
[0016] 2、本技术方案提供一种国标PS流转RTMP直播流的实时转换方法,该方法转换效率高,本技术方案所有的转换过程在服务器上完成,接收RTMP流的终端如WEB浏览器或VLC播放器不再需要转换过程,减低接收RTMP流的终端的转换计算量,降低能耗。
附图说明
[0017] 为了更清楚地说明本发明
实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019] 图2是本发明的流传输时序图;
[0020] 图3是转换系统结构示意图;
具体实施方式
[0022] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0023] 如图1-2所示,一种国标PS流转RTMP直播流的实时转换方法,包括以下步骤:
[0024] S1:从收流端口接收荷载PS流的RTP数据包,先查找第一个荷载着PS包头的RTP包,然后将荷载着PS包的RTP包放到PS包缓存中,并检查RTP包的Sequence是否连续,如果不连续则缓存清空;缓存清空使得步骤S2解析的PS包的过程正确,减少PS包解析的出错几率。
[0025] S2:对PS包缓存中RTP包解析,同时继续不断接受RTP包放到PS包缓存中,直到接收完一个完整的PS包,将这个完整PS包中荷载的视频数据解析出来,放到视频H.264缓存中;
[0026] S3:将PS包中拆出的H.264数据进行拆帧,将拆分出的的每一个完整的H.264帧放到帧缓存中;因为一个PS包中可能荷载着多帧H.264,所以需要将PS包中拆出的H.264数据进行拆帧,采用的防范是通过寻找H.264的起始头(网络传输的H.264的起始头位0x00000001或者0x000001)的方法进行拆分的,两个起始头之间的数据即为一个完整的H.264帧;
[0027] S4:将完整的H.264帧打包成RTMP,然后通过URL推流给RTMP流媒体服务器。
[0028] 其中H.264帧包括SPS、PPS、关键帧。
[0029] 通过上述国标PS流转RTMP直播流的实时转换方法,使得WEB浏览器或VLC播放器通过URL向RTMP流媒体服务器拉流进行视频点播。
[0030] 每个RTP包的Sequence会自动加一,用于接收端检测丢包情况。
[0031] 如图3所示,应用国标PS流转RTMP直播流的实时转换方法搭建的转换系统结构,包括流转换和RTMP服务器,摄像机产生PS包形成PS流上传至流转换,流转换采用国标PS流转RTMP直播流的实时转换方法将PS流转换为RTMP流,并推流到RTMP服务器,WEB浏览器、VLC播放器等终端通过URL向RTMP流媒体服务器拉流进行视频点播。
[0032] 如图4所示,应用国标PS流转RTMP直播流的实时转换方法搭建的转换系统的模块组件包括PS流接收模块、RTP荷载的PS包缓存模块、PS包缓存模块、媒体流缓存模块及H.264拆分打包RTMP推流模块;
[0033] PS流接收模块负责接收收流端口的荷载PS流的RTP数据包;
[0034] RTP荷载的PS包缓存模块负责对荷载PS流的RTP数据包解析,先查找第一个荷载着PS包头的RTP包,然后将荷载着PS包的RTP包放到PS包缓存中,并检查RTP包的Sequence是否连续,如果不连续则缓存清空;
[0035] PS包缓存模块负责对PS包缓存中RTP包解析,同时继续不断接受RTP包放到PS包缓存中,直到接收完一个完整的PS包,将这个完整PS包中荷载的视频数据解析出来,放到视频H.264缓存中;
[0036] 媒体流缓存模块负责将PS包中拆出的H.264数据进行拆帧,将拆分出的的每一个完整的H.264帧放到帧缓存中;
[0037] H.264拆分打包RTMP推流模块负责将完整的H.264帧打包成RTMP,然后通过URL推流给RTMP流媒体服务器;
[0038] 本发明提供一种国标PS流转RTMP直播流的实时转换方法,转换效率高,该技术方案使得用户可直接使用WEB浏览器VLC播放器观看公共安全领域的视频,不再需要安装相应的浏览器插件,用户体验好,方便快捷。
[0039] 在本
说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0040] 以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。