CN115643426A - 一种面向空间应用领域的通用视频播放方法和系统 - Google Patents

一种面向空间应用领域的通用视频播放方法和系统 Download PDF

Info

Publication number
CN115643426A
CN115643426A CN202211266985.3A CN202211266985A CN115643426A CN 115643426 A CN115643426 A CN 115643426A CN 202211266985 A CN202211266985 A CN 202211266985A CN 115643426 A CN115643426 A CN 115643426A
Authority
CN
China
Prior art keywords
stream
frame
index
bare
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211266985.3A
Other languages
English (en)
Other versions
CN115643426B (zh
Inventor
梁骥
郭丽丽
王嘉玺
杨苏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Technology and Engineering Center for Space Utilization of CAS
Original Assignee
Technology and Engineering Center for Space Utilization of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Technology and Engineering Center for Space Utilization of CAS filed Critical Technology and Engineering Center for Space Utilization of CAS
Priority to CN202211266985.3A priority Critical patent/CN115643426B/zh
Publication of CN115643426A publication Critical patent/CN115643426A/zh
Application granted granted Critical
Publication of CN115643426B publication Critical patent/CN115643426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明涉及视频播放技术领域,尤其涉及一种面向空间应用领域的通用视频播放方法和系统,方法包括:对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据;滑动查找裸流数据中的每个I帧帧头,并生成每个I帧的索引,并将裸流数据保存至分布式时序数据库中;推流器接收任一I帧的索引时,从数据库中查询任一I帧的索引所对应的裸流数据,当任一I帧的索引对应的裸流数据的格式为H.264格式时,直接进行推流,或将任一I帧的索引对应的裸流数据的格式转码为H.264格式,再向流媒体服务器进行推流,流媒体服务器向Web视频播放器推流,实现了H.265格式的视频数据在Web视频播放器上的流畅播放。

Description

一种面向空间应用领域的通用视频播放方法和系统
技术领域
本发明涉及视频播放技术领域,尤其涉及一种面向空间应用领域的通用视频播放方法和系统。
背景技术
当前视频播放技术领域,将视频播放技术划分为了直播、点播两个分支。由于Web端对H.265编码格式视频原生播放支持并不友好,导致当前基于B/S结构针对H.265的视频直播、点播并没有一个非常完善、友好的方案。针对H.265直播当前解决方案又为两大类,一类是在后端将H.265编码的视频转码为H.264格式,而后沿用原有的H.264技术体系;一类是将数据通过Websocket推送给前端,前端通过WebAssembly技术进行解码,实现播放。在第一种方案中,由于沿用原有H.264的技术体系,难以降低对Flash插件的依赖,同时rtmp推流的时延也比较高;在第二种方案中,通过WebAssembly技术进行解码,2K视频的解码能力难以达到25fps流畅播放的需求,并且涉及到复杂的编译环节。针对视频点播,一般通过文件方式进行存储,用户通过Http请求获取完整视频文件或分段的视频文件,下载到本地而后进行播放,这种方式的时延一般较高,此外由于与视频直播采用了不同的技术路线,因此开发、维护成本较高。
我国空间站在轨载荷设备视频数据目前主要为H.264、H.265编码,每种载荷设备在工作过程中将采集到的H.264或H.265裸流打包为源包数据实时下行,下行速率约等于视频的码率。在进行在轨实验过程中,地面科学家需要依据视频数据对载荷状态或实验进展快速判断、做出决策以及时对载荷进行控制,因此这对视频播放过程中的时延提出了严苛的要求。
目前在视频领域解决的技术手段如下:
1)公开号为:CN113556579A、主题名称为“一种基于HTML5的Web无插件播放安防实时视频的方法”的发明专利中,包括三个模块:浏览器HTML5播放器、HTML5转码网关以及视频监控平台流媒体服务器。浏览器HTML5播放器通过Websocket向HTML5转码网关发送视频播放请求;HTML5转码网关基于浏览器HTML5播放器发送的请求,向视频监控平台流媒体服务器发起视频播放请求,并将请求到的视频流转码为H.264后封装为FMP4格式,并通过发送给对应的浏览器HTML5播放器;浏览器HTML5播放器接收到FMP4流后,通过浏览器MSE接口,将数据送进HTML5video标签,调用play接口进行视频播放;
缺点为:这种技术方案虽然解决了H.265视频通过Web原生播放的问题,然而其时延仍然难以满足空间应用领域科学实验对视频显示时延的要求。该方法的时延由两部分导致,首先FMP4在转码网关进行打包就存在时延,其次在打包过程中是需要分片的,分片(fragement)的大小进一步决定了时延的大小;通信协议采用的是Websocket,Websocket基于TCP通信,TCP的确认应答、拥塞控制的机制会引入时延,并且导致累积时延。
2)公开号为“CN113727113A”、主题名称为“视频解码方法、推流方法及系统”的发明专利中,基于WebRTC实时推送流媒体数据,而后通过改造后的开源浏览器chromium支持对H.265的播放。浏览器通过ICE协议与云服务器建立WebRTC连接;云服务器将裸流数据进行封装,并通过SRTP流向浏览器端发送;浏览器解密SRTP流,得到RTP流;解析RTP流,确定RTP流的RTP负载类型为H265格式后;基于H265接口调用预设的H265解码器对RTP流进行解码,得到目标视频对应的图片数据。
缺点为:该方案的核心在于对开源浏览器chromium进行了改造,使其支持H.265解码,然而在方案中未见到对chromium改造技术细节的描述,可操作性较低;其次,方案对chromium浏览器严重依赖,对于未安装此浏览器的用户不够友好,兼容性差。
3)公开号为“CN111385660A”,主题名称为“视频的点播方法、装置、设备及存储介质”的发明专利,通过对视频文件分片接收视频点播请求,并根据所述视频点播请求下载视频分片文件;根据视频分片文件的下载速度、视频播放码率及点播视频的总时长确定所述点播视频的开播条件;当下载的视频分片文件的大小满足所述开播条件时,对下载的视频分片文件进行解码并播放。
缺点为:该方案采用HLS协议通过文件分片的方式提高点播视频的时效性,然而同样需要等到单个分片文件下载完成后才可播放,并不具备强实时的特性;此外这种方式仍然无法支持H.265视频数据的播放。
本发明给出了低时延下H.264、H.265视频直播、点播的一体化解决方案,显著降低了视频播放时延,支持了2K、4K H.265视频在Web端的原生播放,降低了开发的复杂度、降低了维护成本,具有较高的扩展性。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供了一种面向空间应用领域的通用视频播放方法和系统。
本发明的一种面向空间应用领域的通用视频播放方法的技术方案如下:
S1、解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
S2、解析模块根据H.264编码标准或H.265编码标准滑动查找所述裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
S3、所述推流器第一次接收I帧的索引时,从所述分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引所述对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;所述第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至所述推流器,所述推流器再基于SRT协议向所述流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向所述流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向所述流媒体服务器进行推流,所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
本发明的一种面向空间应用领域的通用视频播放系统的技术方案如下:
包括解析模块、推流器、第一目标转码服务、代理服务、流媒体服务器和Web视频播放器;
解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
解析模块根据H.264编码标准或H.265编码标准滑动查找所述裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
所述推流器第一次接收I帧的索引时,从所述分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引所述对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;所述第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至所述推流器,所述推流器再基于SRT协议向所述流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向所述流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向所述流媒体服务器进行推流,所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
本发明的技术方案的有益效果如下:
采用一套相同的技术方案实现了点播、直播两种应用场景,架构统一,减少开发成本,降低后续运维复杂度;
通过WebRTC与后端GPU DECODER硬解码实现了2K、4K分辨率H.265在Web端的流畅播放(25fps以上),并且播放延迟在500ms以内;
通过Openresty整合Nginx及Lua脚本实现了基于请求参数的会话绑定,使得解码模块可以以集群的形式部署,实现了解码的负载均衡,大大提高了系统的伸缩能力;
通过构建关键帧索引,并将视频数据切分为2KB小包存储在时序数据库中,支持随机指定偏移量播放,采用推流的方式支持用户回放,使得用户在回放时能够以近乎实时播放的效率播放历史数据。
附图说明
图1为本发明实施例的一种面向空间应用领域的通用视频播放方法的流程示意图;
图2为本发明实施例的一种面向空间应用领域的通用视频播放系统的结构示意图;
图3为本发明实施例的一种面向空间应用领域的通用视频播放方法的视频实时播放流程示意图;
图4为本发明实施例的一种面向空间应用领域的通用视频播放方法的视频回放显示流程示意图;
图5为本发明实施例的一种面向空间应用领域的通用视频播放方法的解析模块处理流程示意图;
图6为本发明实施例的一种面向空间应用领域的通用视频播放方法的转码服务处理流程示意图;
图7为本发明实施例的一种面向空间应用领域的通用视频播放方法的代理服务处理流程示意图;
图8为本发明实施例的一种面向空间应用领域的通用视频播放方法的源包数据格式示意图;
图9为本发明实施例的一种面向空间应用领域的通用视频播放方法的Cassandra数据库裸流数据表示意图;
图10为本发明实施例的一种面向空间应用领域的通用视频播放方法的Cassandra数据库I帧帧头索引表结构示意图。
具体实施方式
如图1所示,本发明实施例的一种面向空间应用领域的通用视频播放方法,包括如下步骤:
S1、解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
S2、解析模块根据H.264编码标准或H.265编码标准滑动查找裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
S3、推流器第一次接收I帧的索引时,从分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,推流器再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向流媒体服务器进行推流,流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流,结合图2和图3进行如下说明:
推流器实时接收KAFKA消息中间件发送的I帧索引,在第一次接收到某个deviceID的索引数据后,则创建线程,依据索引信息查询Cassandra数据库获取裸流数据;若裸流数据为H.264数据,则直接通过SRT协议推送给SRS流媒体服务器(流地址在Web视频播放器打开时通过Http协议与推流器协商确定,);若为H.265数据,则先请求转码服务,再将转码后的结果推送给SRS服务;依据当前的推流进度持续请求Cassandra数据库,将获取到的结果继续向播放器推送,若持续请求10s后一直无法获取新的码流数据,则销毁本线程。
其中,“第一次”可以依据应用场景进行定义,如持续10秒未收到,再次收到则当做“第一次”;
其中,Web视频播放器基于SRS WebRtc播放器实现,流地址信息通过Http请求从推流器获取,不同Web视频播放器的流地址由Web视频播放器生成的UUID进行区分,通过WebRtc协议从SRS流媒体服务器接收流媒体数据;播放器可选择订阅不同的空间站载荷视频数据进行显示,通过Http请求与推流器交互实现播放暂停切换、进度条拖拽、依据时间检索等常用功能。
可选地,在上述技术方案中,还包括:
S4、推流器接收Web视频播放器的推流请求;
S5、推流器判断是否存在Web视频播放器对应的推流线程,若是,调度推流线程,并依据推流请求中的时间码和指定的设备ID,在数据库中向后查询距离推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据,若否,创建推流线程,并依据推流请求中的时间码和指定的设备ID,在数据库中向后查询距离推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据;当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第二目标转码服务后,将转码请求转发给第二目标转码服务;第二目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第三预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第四预设时长后,若无数据,则停止向流媒体服务器进行推流;流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流,结合图4进行说明:
在回放时Web视频播放器通过Http请求向推流器申请推流,依据请求中携带的UUID查看是否已存在对应的推流线程,若存在,则调度此线程通过请求中携带的时间码信息向后查询最近的I帧索引信息,依据查询到的索引信息查询视频数据,进而实现推流;若不存在则创建新的线程进行上述操作,与此同时将线程ID与UUID映射关系信息缓存。
在有些视频播放的方案中,如果一个GOP中间有任意的数据包丢失,则丢弃这一组数据,这样无疑会影响视频播放的实时性和完整性。可以看到,在本发明中只要视频流的GOP中有I帧,即便中间有数据丢失,也会将其推送到前端进行实时显示,这样能最大限度地保证显示的实时性与完整性。
可选地,在上述技术方案中,S2包括:
S20、将H.264格式或H.265格式的裸流数据存储至空间站有效载荷的设备ID所对应的内存缓存中;
S21、根据时间码和包序号,按照从小到大的顺序,对空间站有效载荷的设备ID对应的内存缓存中的所有的裸流数据进行排序;
S22、将包序号连续的裸流数据进行首尾拼接;
S23、根据H.264编码标准或H.265编码标准,从首尾拼接的裸流数据中查找I帧帧头;
S24、并根据每个I帧帧头生成每个I帧的索引,将每个I帧索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
S25、删除包序号连续的中间包缓存裸流数据,并删除已过期的缓存裸流数据结合图5进行说明:
解析模块实时接收KAFKA消息中间件发送的源包数据,在接收到源包数据后首先从源包数据的数据域中提取裸流数据,,将裸流数据依据deviceID进行分类放入到内存缓存中,在缓存中依据时间码和包序号从小到大排序(载荷视频数据下行过程中会乱序;需要注意的是不同设备的时间码精度可能不同,因此存在时间码相同包序号不同的情况。针对这种情况,在排序算法中,应当考虑包序号翻转的情况,即如果两个源包的时间码相同,其中一个包序号为0,另一个包序号为0x7FFF,从小到大排列时,包序号为0x7FFF的源包应排列在包序号为0的源包的前面)。
将包序号连续的裸流数据首尾拼接,依据H.264、H.265的编码标准滑动查找I帧帧头。若找到I帧帧头则将其存在的位置封装为I帧索引写入到Cassandra数据库的I帧帧头索引表,同时通过KAFKA对外发布I帧索引。无论是否找到I帧帧头都应当将连续裸流数据包的中间包数据从缓存中清掉;此外,对于缓存已过期的裸流数据包从缓存中清除,可依据具体应用场景设置缓存过期时间,在本方案中设置时间为5秒。
可选地,在上述技术方案中,S3中,第一目标转码服务将该I帧的索引对应的裸流数据的格式转码为H.264格式的过程,包括:
S30、第一目标转码服务根据接收到的转码请求中的UUID,判断是否存在转码线程,若是,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据,若否,创建转码线程,并在转码线程内进行GPU绑定,初始化GPU驱动API,并生成对应上下文CUcontext;创建AVFormatContext并获取编解码信息,得到视频流编解码信息后,根据CUcontext创建解码器和编码器,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据。结合图6进行说明:
接收转码的Http请求,在Http请求中携带了需要被转码的H.265的分片数据以及UUID;由于视频转码具有连续性,同一个流的数据通过UUID进行识别,依据UUID判断当前转码模块中是否已存在与此请求对应的转码线程,若存在则直接进行转码,若不存在则需要新建转码线程,并进行一系列的初始化操作,包括:进行GPU绑定,初始化GPU驱动API,并生成对应上下文CUcontext;创建AVFormatContext并获取编解码信息,得到视频流编解码信息后,根据CUcontext创建解码器和编码器。在解码器初始化完毕后,依据解码器解析得到视频帧得到YUV数据,在GPU端用cuMemcpy2D API将YUV数据拷贝到编码器内部YUV缓冲器,编码器编码得到H.264视频帧,写入H.264缓冲队列;从缓冲队列中获取H.264视频数据并返回给请求端。
可选地,在上述技术方案中,第一目标转码服务的确定过程,包括:
代理服务接收到推流器的转码请求,在代理服务的Nginx模块Access阶段通过嵌入的Lua脚本获取转码请求中推流器推流线程对应的UUID;
代理服务的一致性哈希算法模块对推流器对应的UUID取哈希值,依据取得的哈希值从转码服务集群中确定第一目标转码服务,并将转码请求转发至第一目标转码服务。
可选地,在上述技术方案中,还包括:
代理服务在接收到第一目标转码服务返回的响应信息后,在代理服务的Nginx模块的Log阶段,通过嵌入的Lua脚本获取第一目标转码服务的响应信息,当响应信息所包含的状态码错误,或响应时间超过第五预设时长时,则在一致性哈希算法模块中删除该第一目标转码服务,实现故障转移。结合图7进行说明:
代理服务由Nginx和Openresty以及Lua脚本组成,主要功能为实现基于会话绑定的负载均衡,同时满足一定的故障转移需求。
一个UUID对应的推流线程,对应转码服务的一个转码线程,由于转码占用的GPU资源很高,因此需考虑搭建分布式集群采用负载均衡的策略实现高并发的并行转码。代理服务在对转码请求转发过程中,相同的UUID对应的码流数据应当转发给同一个转码服务,因此本方案采用openresty实现了基于请求参数UUID的一致性哈希的负载均衡策略,同时通过感知服务响应效率实现了故障的动态转移。
首先启动Nginx并在其initialization阶段加载一致性哈希算法模块,接收转码请求,在Nginx的Access阶段通过嵌入的Lua脚本获取请求中的UUID信息,依据一致性哈希算法模块对UUID取哈希值,依据取得的哈希值确定转发的服务器;在获取转码结果后,在Nginx的Log阶段通过嵌入的Lua脚本获取转码服务响应信息,当状态码错误或响应时间超时(如2秒),则在一致性哈希算法中删除此服务,重置一致性哈希函数,实现故障转移。
本发明的整体架构如下图8所示,分为资源层、平台层、应用层三部分。本方案资源层为私有云平台,所有中间件及应用服务均统一部署在云平台上;为保证消息、数据传输的可靠性、实时性,采用KAFKA作为消息中间件;为了保证视频数据查询检索的效率,采用了cassandra数据库;SRS服务器作为流媒体服务器负责向Web分发视频流;Nginx作为后端代理,为转码的负载均衡提供支撑。应用层分为五部分:Web视频播放器、解析模块、推流器、代理服务、转码服务。
源包数据格式如图8所示,源包数据为不定长二进制源码数据包,最长不超过2KB。
设备ID(deviceID):空间站有效载荷视频采集设备的唯一ID,不同的设备产生不同的编码格式、不同码率、不同分辨率的视频数据;
包序号(sequenceNo):每个设备每次开机采集的源包的包序号从0开始递增,到0x7FFF后翻转到0;
时间码(collectiontime):每包载荷源包在空间站上采集的时间,单位为微秒;
有效长度:数据域中有效数据的长度;
数据域:数据域中存储H.265/H.264裸流数据源码;
CRC:CRC校验和。
Cassandra数据库裸流数据表如图9所示。Cassandra数据库表中的主键由分区键(Partition Key)和排序键(Clustering Key)复合的形式组成;在本方案设计的裸流数据表中,分区键为deviceID和datapk组成,即同一个设备某一时间段(时间段长度由人为设置的segment的大小决定,segment越大,一个分区中的数据量就越多,反之,越小)的数据放入相同的分区;排序键由时间码和包序号组成,先按照时间码排序,在此基础上再按照包序号排序。
数据库content字段中存储的是H.265/H.264裸流数据源码,每包数据大小不超过2KB。
Cassandra数据库I帧帧头索引表如图10所示,在本方案设计的I帧帧头索引表中,分区健为deviceID和indexpk组成,即同一个设备某一时间段(时间段长度由人为设置的indexsegment的大小决定,indexsegment越大,一个分区中的索引量就越多,反之,越小)的索引数据放入相同的分区;排序键由时间码和包序号组成,先按照时间码排序,在此基础上再按照包序号排序。
数据库offset字段中存储的是H.265/H.264裸流数据I帧帧头在本包数据(content)中的偏移量,便于直接定位到I帧。
在上述各实施例中,虽然对步骤进行了编号S1、S2等,但只是本申请给出的具体实施例,本领域的技术人员可根据实际情况调整S1、S2等的执行顺序,此也在本发明的保护范围内,可以理解,在一些实施例中,可以包含如上述各实施方式中的部分或全部。
如图2所示,本发明实施例的一种面向空间应用领域的通用视频播放系统,包括解析模块、推流器、第一目标转码服务、代理服务、流媒体服务器和Web视频播放器;
解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
解析模块根据H.264编码标准或H.265编码标准滑动查找裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
推流器第一次接收I帧的索引时,从分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,推流器再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向流媒体服务器进行推流,流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
可选地,在上述技术方案中,还包括第二目标转码服务;
推流器接收Web视频播放器的推流请求;
推流器判断是否存在Web视频播放器对应的推流线程,若是,调度推流线程,并依据推流请求中的时间码和指定的设备ID,在数据库中向后查询距离推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据,若否,创建推流线程,并依据推流请求中的时间码和指定的设备ID,在数据库中向后查询距离推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据;当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第二目标转码服务后,将转码请求转发给第二目标转码服务;第二目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第三预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第四预设时长后,若无数据,则停止向流媒体服务器进行推流;流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
可选地,在上述技术方案中,解析模块具体用于:
将H.264格式或H.265格式的裸流数据存储至空间站有效载荷的设备ID所对应的内存缓存中;
根据时间码和包序号,按照从小到大的顺序,对空间站有效载荷的设备ID对应的内存缓存中的所有的裸流数据进行排序;
将包序号连续的裸流数据进行首尾拼接;
根据H.264编码标准或H.265编码标准,从首尾拼接的裸流数据中查找I帧帧头;
并根据每个I帧帧头生成每个I帧的索引,将每个I帧索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中。
可选地,在上述技术方案中,第一目标转码服务将该I帧的索引对应的裸流数据的格式转码为H.264格式的过程,包括:
第一目标转码服务根据接收到的转码请求中的UUID,判断是否存在转码线程,若是,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据,若否,创建转码线程,并在转码线程内进行GPU绑定,初始化GPU驱动API,并生成对应上下文CUcontext;创建AVFormatContext并获取编解码信息,得到视频流编解码信息后,根据CUcontext创建解码器和编码器,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据。
可选地,在上述技术方案中,第一目标转码服务的确定过程,包括:
代理服务接收到推流器的转码请求,在代理服务的Nginx模块Access阶段通过嵌入的Lua脚本获取转码请求中推流器推流线程对应的UUID;
代理服务的一致性哈希算法模块对推流器对应的UUID取哈希值,依据取得的哈希值从转码服务集群中确定第一目标转码服务,并将转码请求转发至第一目标转码服务。
可选地,在上述技术方案中,还包括:
代理服务在接收到第一目标转码服务返回的响应信息后,在代理服务的Nginx模块的Log阶段,通过嵌入的Lua脚本获取第一目标转码服务的响应信息,当响应信息所包含的状态码错误,或响应时间超过第五预设时长时,则在一致性哈希算法模块中删除该第一目标转码服务,实现故障转移。
上述关于本发明的一种面向空间应用领域的通用视频播放系统中的各参数和各个单元模块实现相应功能的步骤,可参考上文中关于一种面向空间应用领域的通用视频播放方法的实施例中的各参数和步骤,在此不做赘述。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。
因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM),只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种面向空间应用领域的通用视频播放方法,其特征在于,包括:
S1、解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
S2、解析模块根据H.264编码标准或H.265编码标准滑动查找所述裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
S3、所述推流器第一次接收I帧的索引时,从所述分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引所述对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;所述第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至所述推流器,所述推流器再基于SRT协议向所述流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向所述流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向所述流媒体服务器进行推流,所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
2.根据权利要求1所述的一种面向空间应用领域的通用视频播放方法,其特征在于,还包括:
S4、所述推流器接收所述Web视频播放器的推流请求;
S5、所述推流器判断是否存在所述Web视频播放器对应的推流线程,若是,调度推流线程,并依据所述推流请求中的时间码和指定的设备ID,在数据库中向后查询距离所述推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据,若否,创建推流线程,并依据所述推流请求中的时间码和指定的设备ID,在数据库中向后查询距离所述推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据;当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,所述推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第二目标转码服务后,将转码请求转发给第二目标转码服务;所述第二目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第三预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第四预设时长后,若无数据,则停止向流媒体服务器进行推流;所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
3.根据权利要求2所述的一种面向空间应用领域的通用视频播放方法,其特征在于,所述S2包括:
S20、将H.264格式或H.265格式的裸流数据存储至所述空间站有效载荷的设备ID所对应的内存缓存中;
S21、根据时间码和包序号,按照从小到大的顺序,对所述空间站有效载荷的设备ID对应的内存缓存中的所有的裸流数据进行排序;
S22、将包序号连续的裸流数据进行首尾拼接;
S23、根据H.264编码标准或H.265编码标准,从首尾拼接的裸流数据中查找I帧帧头;
S24、并根据每个I帧帧头生成每个I帧的索引,将每个I帧索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中。
4.根据权利要求1所述的一种面向空间应用领域的通用视频播放方法,其特征在于,所述S3中,第一目标转码服务将该I帧的索引所述对应的裸流数据的格式转码为H.264格式的过程,包括:
S30、第一目标转码服务根据接收到的转码请求中的UUID,判断是否存在转码线程,若是,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据,若否,创建转码线程,并在所述转码线程内进行GPU绑定,初始化GPU驱动API,并生成对应上下文CUcontext;创建AVFormatContext并获取编解码信息,得到视频流编解码信息后,根据CUcontext创建解码器和编码器,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据。
5.根据权利要求1所述的一种面向空间应用领域的通用视频播放方法,其特征在于,所述第一目标转码服务的确定过程,包括:
代理服务接收到推流器的转码请求,在代理服务的Nginx模块Access阶段通过嵌入的Lua脚本获取转码请求中推流器推流线程对应的UUID;
代理服务的一致性哈希算法模块对推流器对应的UUID取哈希值,依据取得的哈希值从转码服务集群中确定第一目标转码服务,并将转码请求转发至第一目标转码服务。
6.根据权利要求5所述的一种面向空间应用领域的通用视频播放方法,其特征在于,还包括:
代理服务在接收到第一目标转码服务返回的响应信息后,在代理服务的Nginx模块的Log阶段,通过嵌入的Lua脚本获取第一目标转码服务的响应信息,当响应信息所包含的状态码错误,或响应时间超过第五预设时长时,则在一致性哈希算法模块中删除该第一目标转码服务,实现故障转移。
7.一种面向空间应用领域的通用视频播放系统,其特征在于,包括解析模块、推流器、第一目标转码服务、代理服务、流媒体服务器和Web视频播放器;
解析模块对空间站有效载荷所发送的源包数据进行解析,得到H.264格式或H.265格式的裸流数据,其中,源包数据指:利用应用协议封装的视频流数据;
解析模块根据H.264编码标准或H.265编码标准滑动查找所述裸流数据中的每个I帧帧头,并根据每个I帧帧头生成每个I帧的索引,将每个I帧的索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中;
所述推流器第一次接收I帧的索引时,从所述分布式时序数据库中查询该I帧的索引所对应的裸流数据,当该I帧的索引所述对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第一目标转码服务后,将转码请求转发给第一目标转码服务;所述第一目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至所述推流器,所述推流器再基于SRT协议向所述流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第一预设时长内的裸流数据,向所述流媒体服务器进行推流,直至向后查询第二预设时长后,若无数据,则停止向所述流媒体服务器进行推流,所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
8.根据权利要求7所述的一种面向空间应用领域的通用视频播放系统,其特征在于,还包括第二目标转码服务;
所述推流器接收所述Web视频播放器的推流请求;
所述推流器判断是否存在所述Web视频播放器对应的推流线程,若是,调度推流线程,并依据所述推流请求中的时间码和指定的设备ID,在数据库中向后查询距离所述推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据,若否,创建推流线程,并依据所述推流请求中的时间码和指定的设备ID,在数据库中向后查询距离所述推流请求中的时间码最近的I帧的索引,并在数据库中查询该I帧的索引对应的裸流数据;当该I帧的索引对应的裸流数据的格式为H.264格式时,通过SRT协议向流媒体服务器进行推流,当该I帧的索引所述对应的裸流数据的格式为H.265格式时,所述推流器将携带裸流数据与UUID的转码请求发送给代理服务,代理服务从转码服务集群中确定第二目标转码服务后,将转码请求转发给第二目标转码服务;所述第二目标转码服务将该I帧的索引所对应的裸流数据的格式转码为H.264格式,并发送至代理服务,代理服务发送至推流器,再基于SRT协议向流媒体服务器进行推流,并按照该I帧的索引的时间码向后依次查询第三预设时长内的裸流数据,向流媒体服务器进行推流,直至向后查询第四预设时长后,若无数据,则停止向流媒体服务器进行推流;所述流媒体服务器通过WebRTC实时通信框架向Web视频播放器推流。
9.根据权利要求7所述的一种面向空间应用领域的通用视频播放系统,其特征在于,所述解析模块具体用于:
将H.264格式或H.265格式的裸流数据存储至所述空间站有效载荷的设备ID所对应的内存缓存中;
根据时间码和包序号,按照从小到大的顺序,对所述空间站有效载荷的设备ID对应的内存缓存中的所有的裸流数据进行排序;
将包序号连续的裸流数据进行首尾拼接;
根据H.264编码标准或H.265编码标准,从首尾拼接的裸流数据中查找I帧帧头;
并根据每个I帧帧头生成每个I帧的索引,将每个I帧索引发送至推流器,并将每个I帧的索引和裸流数据保存至分布式时序数据库中。
10.根据权利要求7所述的一种面向空间应用领域的通用视频播放系统,其特征在于,第一目标转码服务将该I帧的索引所述对应的裸流数据的格式转码为H.264格式的过程,包括:
第一目标转码服务根据接收到的转码请求中的UUID,判断是否存在转码线程,若是,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据,若否,创建转码线程,并在所述转码线程内进行GPU绑定,初始化GPU驱动API,并生成对应上下文CUcontext;创建AVFormatContext并获取编解码信息,得到视频流编解码信息后,根据CUcontext创建解码器和编码器,利用转码线程内的解码器将该I帧的索引对应的裸流数据转为YUV数据,利用转码线程内的编码器对YUV数据进行编码,得到该I帧的索引对应的H.264格式的裸流数据。
CN202211266985.3A 2022-10-17 2022-10-17 一种面向空间应用领域的通用视频播放方法和系统 Active CN115643426B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211266985.3A CN115643426B (zh) 2022-10-17 2022-10-17 一种面向空间应用领域的通用视频播放方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211266985.3A CN115643426B (zh) 2022-10-17 2022-10-17 一种面向空间应用领域的通用视频播放方法和系统

Publications (2)

Publication Number Publication Date
CN115643426A true CN115643426A (zh) 2023-01-24
CN115643426B CN115643426B (zh) 2023-11-21

Family

ID=84945796

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211266985.3A Active CN115643426B (zh) 2022-10-17 2022-10-17 一种面向空间应用领域的通用视频播放方法和系统

Country Status (1)

Country Link
CN (1) CN115643426B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116821097A (zh) * 2023-07-05 2023-09-29 中国人民解放军92728部队 全脉冲数据处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170114218A (ko) * 2016-04-04 2017-10-13 한화테크윈 주식회사 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치
CN109361925A (zh) * 2018-11-14 2019-02-19 浙江远算云计算有限公司 一种基于hevc转码的视频流加速方法
US20190069006A1 (en) * 2017-08-29 2019-02-28 Western Digital Technologies, Inc. Seeking in live-transcoded videos
CN114339382A (zh) * 2021-12-24 2022-04-12 深圳市商汤科技有限公司 视频播放方法、装置、设备及计算机存储介质
CN115174545A (zh) * 2022-06-29 2022-10-11 广州鲁邦通物联网科技股份有限公司 一种基于国标GB28181的推流web播放方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170114218A (ko) * 2016-04-04 2017-10-13 한화테크윈 주식회사 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치
US20190069006A1 (en) * 2017-08-29 2019-02-28 Western Digital Technologies, Inc. Seeking in live-transcoded videos
CN109361925A (zh) * 2018-11-14 2019-02-19 浙江远算云计算有限公司 一种基于hevc转码的视频流加速方法
CN114339382A (zh) * 2021-12-24 2022-04-12 深圳市商汤科技有限公司 视频播放方法、装置、设备及计算机存储介质
CN115174545A (zh) * 2022-06-29 2022-10-11 广州鲁邦通物联网科技股份有限公司 一种基于国标GB28181的推流web播放方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PPPROG: "nginx+lua实现按参数一致性哈希分发", Retrieved from the Internet <URL:https://blog.csdn.net/sinat_37380158/article/details/107119523> *
SRS-SERVER: "SRS-024-陈海博:SRS在安防中的应用", pages 2, Retrieved from the Internet <URL:https://www.bilibili.com/video/BV11S4y197Zx/> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116821097A (zh) * 2023-07-05 2023-09-29 中国人民解放军92728部队 全脉冲数据处理方法
CN116821097B (zh) * 2023-07-05 2024-01-26 中国人民解放军92728部队 全脉冲数据处理方法

Also Published As

Publication number Publication date
CN115643426B (zh) 2023-11-21

Similar Documents

Publication Publication Date Title
US11477262B2 (en) Requesting multiple chunks from a network node on the basis of a single request message
US10264044B2 (en) Apparatus and method for sending content as chunks of data to a user device via a network
US20160337424A1 (en) Transferring media data using a websocket subprotocol
RU2543568C2 (ru) Плавная потоковая передача клиентского мультимедиа без фиксации состояния
JP2018186524A (ja) コンテンツ送信装置およびコンテンツ再生装置
US10938872B2 (en) Processing interactivity events for streaming media data
US20050123042A1 (en) Moving picture streaming file, method and system for moving picture streaming service of mobile communication terminal
KR102659380B1 (ko) 파일 포맷 박스들에 대한 제네릭 디스크립터를 사용한 미디어 데이터의 프로세싱
TW201703541A (zh) 用於廣播之發信快取區段
CN107819809B (zh) 对内容进行同步操作的方法及装置
US20180176278A1 (en) Detecting and signaling new initialization segments during manifest-file-free media streaming
US20150312303A1 (en) Determining whether to use sidx information when streaming media data
US11321516B2 (en) Processing dynamic web content of an ISO BMFF web resource track
CN103329521A (zh) 用于暂停视频流传送内容的方法、设备和计算机程序产品
CN115643426B (zh) 一种面向空间应用领域的通用视频播放方法和系统
KR20060028480A (ko) 분배 네트워크를 통해 방송된 멀티미디어 콘텐트를다운로딩하기 위한 방법 및 서버
KR20160138044A (ko) 미디어 데이터를 스트리밍하기 위한 목표된 광고 삽입
CN111866526A (zh) 一种直播业务处理方法和装置
CN113438513B (zh) 一种视频分辨率切换方法、装置、设备及存储介质
KR102237900B1 (ko) 클라이언트 단말에 의해 멀티미디어 콘텐츠의 콘텐츠 부분을 검색하기 위한 방법
CN114079796A (zh) 一种频道切换的方法、装置及系统
EP4195626A1 (en) Streaming media content as media stream to a client system
CN117749856A (zh) 多媒体信息播放方法、装置及存储介质
CN117459760A (zh) 一种流媒体按需取流的音视频播放方法及系统
CN117692528A (zh) 数据传输方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant