本发明涉及数据传输技术领域,特别是涉及一种视频数据传输方法、装置及计算机可读存储介质。
背景技术:
视联网是网络发展的重要里程碑,是互联网的更高级形态,是一个实时网络,能够实现目前互联网无法实现的全网高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。最终将实现世界无距离,实现全球范围内人与人的距离只是一个屏幕的距离。
目前视联网中,通过接入视联网的视联网终端能够实时高清的显示视联网采集终端采集的视联网视频数据,但是,由于环境因素,不是所有用户均能够使用视联网终端显示视联网视频数据,这些用户只能通过视联网外的普通互联网终端进行显示,但是现有的在互联网终端显示视联网采集终端采集的视联网视频数据的方式效率低、实时性差。
技术实现要素:
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种视频数据传输方法、装置及计算机可读存储介质。
为了解决上述问题,本发明实施例公开了一种视频数据传输方法,应用于视频数据传输系统中的流媒体模块,所述视频数据传输系统还包括视联网服务器和互联网终端,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,所述方法包括:
接收所述互联网终端发送的视频显示请求;
根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据;
将所述目标视联网视频数据转换为rtmp视频数据;
将所述rtmp视频数据发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据。
可选地,将所述目标视联网视频数据转换为rtmp视频数据,包括:
对所述目标视联网视频数据进行解析处理,获得以太网头部、用户协议数据头部和纯视频数据,其中,所述用户协议头部至少包括:帧率、码率、分辨率和时间戳信息;
按照rtmp协议对所述用户协议数据头部进行封装,获得rtmp协议头部;
根据所述以太网头部、ip协议头部、tcp协议头部、所述rtmp协议头部和所述纯视频数据,确定所述rtmp视频数据。
可选地,所述流媒体模块安装于所述视联网服务器或者所述流媒体模块安装于所述互联网终端,根据所述以太网头部、ip协议头部、tcp协议头部、所述rtmp协议头部和所述纯视频数据,确定所述rtmp视频数据,包括:
在所述流媒体模块安装于视联网服务器时,调用所述视联网服务器自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据;
在所述流媒体模块安装于互联网终端时,调用所述互联网终端自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据。
本发明实施例还公开了一种视频数据传输方法,应用于视频数据传输系统中的互联网终端,所述视频数据传输系统还包括流媒体模块和视联网服务器,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,所述方法包括:
在检测到用户触发的针对目标采集终端的视频显示请求的情况下,将所述视频显示请求发送给所述流媒体模块;
接收所述流媒体模块返回的rtmp视频数据,所述rtmp视频数据是所述流媒体模块根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据后,对所述目标视联网视频数据进行转换后得到的;
调用播放插件,显示所述rtmp视频数据。
本发明实施例还公开了一种视频数据传输装置,应用于视频数据传输系统中的流媒体模块,所述视频数据传输系统还包括视联网服务器和互联网终端,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,所述装置包括:
第一接收模块,用于接收所述互联网终端发送的视频显示请求;
获取模块,用于根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据;
转换模块,用于将所述目标视联网视频数据转换为rtmp视频数据;
第一发送模块,用于将所述rtmp视频数据发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据。
可选地,所述转换模块包括:
解析子模块,用于对所述目标视联网视频数据进行解析处理,获得以太网头部、用户协议数据头部和纯视频数据,其中,所述用户协议头部至少包括:帧率、码率、分辨率和时间戳信息;
封装子模块,用于按照rtmp协议对所述用户协议数据头部进行封装,获得rtmp协议头部;
确定子模块,用于根据所述以太网头部、ip协议头部、tcp协议头部、所述rtmp协议头部和所述纯视频数据,确定所述rtmp视频数据。
可选地,所述流媒体模块安装于所述视联网服务器或者所述流媒体模块安装于所述互联网终端,所述确定子模块,包括:
第一获得子单元,用于在所述流媒体模块安装于视联网服务器时,调用所述视联网服务器自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据;
第二获得子单元,用于在所述流媒体模块安装于互联网终端时,调用所述互联网终端自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据。
本发明实施例还公开了一种视频数据传输装置,应用于视频数据传输系统中的互联网终端,所述视频数据传输系统还包括流媒体模块和视联网服务器,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,所述装置包括:
第二发送模块,用于在检测到用户触发的针对目标采集终端的视频显示请求的情况下,将所述视频显示请求发送给所述流媒体模块;
第二接收模块,用于接收所述流媒体模块返回的rtmp视频数据,所述rtmp视频数据是所述流媒体模块根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据后,对所述目标视联网视频数据进行转换后得到的;
显示模块,用于调用播放插件,显示所述rtmp视频数据.
本发明实施例还公开了一种视频数据传输装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例任一所述的视频数据传输方法。
本发明实施例还公开了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的视频数据传输方法。
本发明实施例包括以下优点:
本发明实施例中,流媒体模块在接收互联网终端发送的针对目标采集终端的视频显示请求之后,根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据,再将目标视联网视频数据转换为rtmp视频数据,并发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据。
通过本实施例的方法,将视联网视频数据转换为rtmp视频数据,并发送到互联网终端显示,实现了将视联网视频数据发送到互联网终端进行显示的功能,使得在视联网外的互联网终端也能够实时高清地显示视联网视频数据。此外,本实施例通过将流媒体模块直接安装于视联网服务器或者互联网终端上,可以避免单独部署流媒体服务器,节约资源,同时,也能够避免视联网视频数据在多个服务器之间转发,提高了数据传输效率,进一步保证视频数据的实时性。
附图说明
图1是本发明一实施例提出的一种视频数据传输系统的实施环境的示意图;
图2是本发明一实施例提出的一种视频数据传输方法的流程图;
图3是本发明一实施例提出的流媒体模块与互联网终端握手流程图;
图4是本发明一实施例提出的另一种视频数据传输系统的实施环境的示意图;
图5是本发明一实施例提出的另一种视频数据传输系统的实施环境的示意图;
图6是本发明一实施例提出的一种视频数据传输装置的结构框图;
图7是本发明一实施例提出的另一种视频数据传输装置的结构框图;
图8是本发明的一种视联网的组网示意图;
图9是本发明的一种节点服务器的硬件结构示意图;
图10是本发明的一种接入交换机的硬件结构示意图;
图11是本发明的一种以太网协转网关的硬件结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
请参考图1,图1是本发明一实施例提出的视频数据传输系统的实施环境的示意图。如图1所示,该实施环境包括:采集终端、视联网服务器、流媒体模块和互联网终端。其中,采集终端与视联网服务器连接,视联网服务器与流媒体模块通过视联网连接,流媒体模块和互联网终端通过互联网连接。
其中,采集终端用于采集视频数据(包括音频数据和视频数据),并通过视联网协议发送到视联网服务器,因此,视联网服务器中的视频数据均是视联网视频数据。
在一种实施方式中,采集终端可以是视联网采集终端,视联网终端采集视频数据之后,直接通过视联网协议将视频数据发送到视联网服务器。
此外,由于视联网能够实现目前互联网无法实现的全网高清视频实时传输,因此,互联网采集终端采集的视频数据也可以通过转换成视联网视频数据,从而通过视联网实现高清视频实时传输,因此,在一种实施方式中,采集终端也可以是互联网采集终端,例如可以是互联网ipc摄像机,互联网采集终端与协转服务器通过互联网连接,协转服务器与视联网服务器通过视联网连接,互联网采集终端在采集视频数据后,可以将视频数据发送到协转服务器,协转服务器将互联网协议视频数据转换为视联网协议的视频数据后,再发送到视联网服务器,如此,视联网服务器接收到的都是视联网视频数据。
在一种实际场景中,一场视频会议中包括主会场和多个分会场,每个分会场均设置有采集终端,目的是在需要的时候可以将每个分会场的视频流推送到主会场进行显示,这其中主会场的显示终端是互联网终端,有的分会场的采集终端是视联网采集终端,有的分会场的采集终端是互联网采集终端,基于现有设备布置,为了使得在互联网终端能够高清实时显示各分会场的视频流,这就需要一种视频数据传输方法。
参考图2,图2是本发明一实施例提出的一种视频数据传输方法的流程图,如图2所示,该方法可以应用于视频数据传输系统中的流媒体模块,所述视频数据传输系统还包括视联网服务器和互联网终端,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,该方法具体可以包括如下步骤:
步骤s21,接收所述互联网终端发送的视频显示请求。
本实施例中,视频显示请求可以包括视频播放请求和视频预览请求。
互联网终端可以是电脑、pad或者手机等智能设备,其上提供有用户操作界面,操作界面可以是web界面或者专门开发的客户端界面,操作界面上展示有各个视联网视频数据的视频流显示区域,用户可以选择其中某个视频流显示区域,这样互联网终端便能够检测到用户触发的视频显示请求。具体地,上述选择操作可以是单击、双击或者悬停等操作。
本实施例中,视联网视频数据可以是视联网服务器中存储的视联网录像数据,也可以是采集终端采集的实时视频数据,其中,实时视频数据和视联网录像数据可以为h264格式的视频数据。
示例地,在视频会议场景中,轮到某个分会场发言时,通常需要将该分会场的视频流推到主会场的大屏幕上,但是在推到主会场的大屏幕上之前,要先确定这个分会场的视频是没问题的,即确定该分会场的采集终端能够正常采集视频数据,所以需要先预览该分会场的采集终端采集的视频流,看看是否有问题,此时,互联网终端的用户可以在操作界面将鼠标移动到该分会场对应的视频流显示区域,将鼠标悬停预设时长,例如悬停2秒钟,此时互联网终端能够检测到用户触发的针对该分会场的采集终端,即目标采集终端的视频预览请求,并将视频预览请求发送给流媒体模块,这样流媒体模块便能够接收互联网终端发送的针对目标采集终端的视频显示请求。
又例如,在预览确定该分会场的采集终端能够正常采集视频数据之后,确定将该分会场的视频流推到主会场的大屏幕上,此时,互联网终端的用户可以在操作界面将鼠标移动到该分会场对应的视频流显示区域,并单击该视频流显示区域,此时互联网终端同样能够检测到用户触发的针对该分会场的采集终端,即目标采集终端的视频播放请求,并将视频播放请求发送给流媒体模块,这样流媒体模块便能够接收互联网终端发送的针对目标采集终端的视频显示请求。
步骤s22,根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据。
本实施例中,对于实时视频数据,流媒体模块在从所述视联网服务器获取目标视联网视频数据之前,会向视联网服务器发送针对目标采集终端的视频流获取请求,视联网服务器在接收到视频流获取请求之后,才会从对应的目标采集终端获取实时视频数据,如此,可以降低视联网服务器存储数据量,节约存储资源,同时可以减少视联网内数据传输进程,避免占用视联网资源。
因此,本实施例中,流媒体模块根据视频显示请求,从所述视联网服务器获取目标视联网视频数据,实际上是流媒体模块通过向视联网服务器发送针对目标采集终端的视频流获取请求,视联网服务器将目标采集终端上传的实时视联网视频数据或者视联网录像数据转发给流媒体模块。
步骤s23,将所述目标视联网视频数据转换为rtmp视频数据。
由于互联网协议与视联网协议不同,互联网终端不能处理视联网视频数据,因此,本实施例中,首先通过流媒体模块将目标视联网视频数据转换为基于tcp协议的rtmp视频数据,才能够被互联网终端处理。
rtmp(realtimemessagingprotocol,实时消息传输协议),该协议基于tcp,是一个协议族,包括rtmp基本协议及rtmpt/rtmps/rtmpe等多种变种。rtmp是一种设计用来进行实时数据通信的网络协议,主要用来在flash/air平台和支持rtmp协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括adobemediaserver/ultrantmediaserver/red5等。rtmp与http一样,都属于tcp/ip四层模型的应用层。
视联网视频数据包括以太网头部(14字节)、视联网交换协议头部(22字节)、公共头部(4字节)、用户协议数据头部(28字节)和纯视频数据。
rtmp视频数据包括以太网头部(14字节)、ip协议头部(20字节)、tcp协议头部(20字节)、rtmp协议头部(可变长度)和纯视频数据。
在一种实施方式中,上述步骤s23具体可以包括以下步骤:
步骤s231,对所述目标视联网视频数据进行解析处理,获得以太网头部、用户协议数据头部和纯视频数据。
其中,所述用户协议头部至少包括:帧率、码率、分辨率和时间戳信息。
步骤s232,按照rtmp协议对所述用户协议数据头部进行封装,获得rtmp协议头部。
步骤s233,根据所述以太网头部、ip协议头部、tcp协议头部、所述rtmp协议头部和所述纯视频数据,确定所述rtmp视频数据。
本实施例中,流媒体模块首先对目标视联网视频数据进行解析处理,获得视联网视频数据包括
本实施例中,视联网视频数据是以数据包的形式在视联网内传输的,因此,流媒体模块接收到的视联网视频数据实际上是视联网视频数据包,同样的rtmp视频数据也是以数据包的形式在互联网内传输的,因此,流媒体模块转换后的rtmp视频数据实际上是rtmp视频数据包,流媒体模块接收到视联网视频数据包之后,依次对视联网视频数据包进行拆包和组包处理,从而完成视联网视频数据包到rtmp视频数据包的转换。其中,拆包过程如下:
流媒体模块首先去掉视联网视频数据包的以太网头部和视联网交换协议头部,此时的视联网视频数据包变成:公共头部(4字节)、用户协议数据头部(28字节)和纯视频数据;
流媒体模块继续解析视联网视频数据包,去掉公共头部,此时视联网包变成:用户协议数据头部(28字节)和纯视频数据,其中用户协议头部,主要包含了视频数据的帧率、码率、分辨率和时间戳等等。此时将用户协议头部包含的信息保存,用于之后封装rtmp数据包。
流媒体模块继续解析视联网视频数据包,去掉用户协议头部,此时视联网视频数据包剩下:纯视频数据,纯视频数据就是真正的视频数据。
拆包过程之后再进行组包过程,组包过程如下:
流媒体模块根据拆包获取到的用户协议头部包含的视频数据的帧率、码率、分辨率和时间戳等等,按照rtmp协议格式,封装成rtmp头部信息,添加到拆包过程中获取到的纯视频数据之前,此时的数据格式:rtmp协议头部(可变长度)和纯视频数据;
最后,流媒体模块再在rtmp协议头部(可变长度)和纯视频数据的基础上添加以太网数据头部、tcp包头和ip包头,最终的rtmp数据包格式:以太网头部(14字节)、ip协议头部(20字节)、tcp协议头部(20字节)、rtmp协议头部(可变长度)和纯视频数据。
在一种实施方式中,流媒体模块可以采用c++语言编写,以提高流媒体模块的兼容性,便于流媒体模块移植,如此,流媒体模块可以安装于视联网服务器或者流媒体模块可以安装于互联网终端,此时,上述步骤s233具体可以包括以下步骤:
步骤s2331,调用所述视联网服务器自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据。
步骤s2332,调用所述互联网终端自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据。
本实施例中,将流媒体模块作为视联网服务器或者互联网终端中的一个程序,该程序能够直接调用视联网服务器或者互联网终端自带的网络协议栈,例如,在视联网服务器或者互联网终端为linux系统的服务器时,流媒体模块可以调用linux网络协议栈,对纯视频数据添加以太网头部、ip协议头部、tcp协议头部和rtmp协议头部,从而获得rtmp视频数据。需要说明的是,步骤s2331和步骤s2332不应该理解为执行先后顺序上的限定。
视联网服务器或者互联网终端可以安装双网卡,一个网卡连接视联网,另一个网卡连接互联网,这样就可以实现视联网服务器或者互联网终端的双网通信。
本实施例中,通过将流媒体模块直接安装于视联网服务器或者互联网终端上,可以避免单独部署流媒体服务器,节约资源,同时,也能够避免视联网视频数据在多个服务器之间转发,提高了数据传输效率,保证视频数据的实时性。
步骤s24,将所述rtmp视频数据发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据。
本实施例中,流媒体模块在将目标视联网视频数据转换为rtmp视频数据之后,可以向互联网终端返回rtmp视频数据,如此,互联网终端便能够接收流媒体模块返回的rtmp视频数据,并在互联网终端的界面上显示rtmp视频数据。
具体地,互联网终端在接收到rtmp视频数据之后,首先调用自身安装的播放插件对rtmp视频数据进行解码,再显示解码后的rtmp视频数据。
本实施例中,考虑到由于互联网终端需要nginx或者tomcat服务,因此互联网终端会接收到其他一些数据格式的数据,此时,互联网终端会对接收到的所有数据进行解码,从而区分出rtmp协议的数据包,并调用相应的插件解码并显示视频。
本实施例中,流媒体模块在接收互联网终端发送的针对目标采集终端的视频显示请求之后,根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据,再将目标视联网视频数据转换为rtmp视频数据,并发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据,通过本实施例的方法,将视联网视频数据转换为rtmp视频数据,并发送到互联网终端显示,实现了将视联网视频数据发送到互联网终端进行显示的功能,使得在视联网外的互联网终端也能够实时高清地显示视联网视频数据。
此外,本实施例通过将流媒体模块直接安装于视联网服务器或者互联网终端上,可以避免单独部署流媒体服务器,节约资源,同时,也能够避免视联网视频数据在多个服务器之间转发,提高了数据传输效率,进一步保证视频数据的实时性。
此外,互联网终端在显示目标采集终端的视频之前,即流媒体模块将rtmp视频数据发送给互联网终端之前,互联网终端需要与流媒体模块依次经过握手、建立连接、建立流和播放过程。
参考图3,图3是本发明一实施例提出的流媒体模块与互联网终端握手流程图,如图3所示,c0、c1和c2是三个大小固定的数据块,s0、s1和s2是三个大小固定的数据块,握手过程如下:
握手开始于互联网终端发送c0、c1,服务器收到c0或c1后发送s0和s1;当互联网终端收齐s0和s1后,开始发送c2,当服务器收齐c0和c1后,开始发送s2;当客户端和服务器分别收到s2和c2后,握手完成。
建立连接过程如下:
1、互联网终端发送命令消息中的“连接”(connect)到流媒体模块,请求与一个服务应用实例建立连接。
2、流媒体模块接收到连接命令消息后,发送确认窗口大小(windowacknowledgementsize)协议消息到互联网终端,同时连接到连接命令中提到的应用程序。
3、流媒体模块发送设置带宽()协议消息到客户端。
4、互联网终端处理设置带宽协议消息后,发送确认窗口大小(windowacknowledgementsize)协议消息到流媒体模块。
5、流媒体模块发送用户控制消息中的“流开始”(streambegin)消息到互联网终端,流媒体模块发送命令消息中的“结果”(_result),通知互联网终端连接的状态。
建立流过程如下:
1、互联网终端送命令消息中的“创建流”(createstream)命令到流媒体模块。
2、流媒体模块接收到“创建流”命令后,发送命令消息中的“结果”(_result),通知互联网终端流的状态。
播放过程如下:
1、互联网终端发送命令消息中的“播放”(play)命令到流媒体模块。
2、接收到播放命令后,流媒体模块发送设置块大小(chunksize)协议消息。
3、流媒体模块发送用户控制消息中的“streambegin”,告知互联网终端流id。
4、播放命令成功的话,流媒体模块发送命令消息中的“响应状态”netstream.play.start&netstream.play.reset,告知互联网终端“播放”命令执行成功。
在完成上述握手、建立连接、建立流和播放4个步骤之后,流媒体模块发送互联网终端要播放的rtmp视频数据。
请参考图4,图4示出了本发明实施例提出的另一种视频数据传输方法的流程图,该方法应用于视频数据传输系统中的互联网终端,所述视频数据传输系统还包括流媒体模块和视联网服务器,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接,该方法具体可以包括如下步骤:
步骤s41,在检测到用户触发的针对目标采集终端的视频显示请求的情况下,将所述视频显示请求发送给所述流媒体模块。
步骤s42,接收所述流媒体模块返回的rtmp视频数据,所述rtmp视频数据是所述流媒体模块根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据后,对所述目标视联网视频数据进行转换后得到的。
步骤s43,调用播放插件,显示所述rtmp视频数据。
本实施例的具体内容可以参见上述步骤s21-s24的内容,这里不再赘述。
参考图5,图5是本发明实施例提出的另一种视频数据传输系统的实施环境的示意图,如图5所示,该实施环境包括:视联网终端、视联网服务器、流媒体模块和互联网web端(即图5中的web电脑)。
具体地,视联网终端包括终端数据模块、终端调度模块和终端协议模块,其中,终端数据模块用于处理视联网视频数据;例如:将编码后的视频数据发送到视联网,或者接收到视联网中的音视频数据进行解码显示播放;终端调度模块用于将处理后的视联网视频数据发送到视联网服务器,终端协议模块用于处理视联网信令协议(客户端)。
视联网服务器可以包括视联网服务器数据模块、视联网服务器调度模块和视联网服务器协议模块,其中,视联网服务器数据模块用于转发视联网音视频数据(服务端),视联网服务器调度模块用于将收到的视频数据通过视联网发送给流媒体模块,视联网服务器协议模块用于处理视联网信令协议(服务端)。
流媒体模块可以包括流媒体模块数据模块、流媒体模块调度模块和流媒体模块协议处理模块,其中,流媒体模块调度模块用于将收到的rtmp视频数据发送给流媒体模块数据模块;流媒体模块数据模块用于对视联网视频数据拆包出纯视频数据,然后将纯视频数据发送到流媒体模块协议处理模块;流媒体模块协议处理模块用于在纯的视频数据前面添加rtmp协议包头,并通过流媒体模块调度模块发送到web电脑。
web电脑可以包括web电脑数据处理模块、web电脑调度模块和web电脑播放插件模块,其中,web电脑调度模块用于接收流媒体模块发送的数据;web电脑数据处理模块用于对接收到的数据进行处理,即区分哪些web电脑调度模块收到的数据中哪些是rtmp数据,哪些不是。如果解析出是rtmp协议,就会通过web电脑调度模块转发给web端电脑播放插件模块;web端电脑播放插件模块用于对rtmp视频数据进行视频解码播放。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于相同的技术构思,请参考图6,图6示出了本发明一实施例提出的视频数据传输装置60的结构框图,应用于视频数据传输系统中的流媒体模块,所述视频数据传输系统还包括视联网服务器和互联网终端,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接;该装置具体可以包括如下模块:
第一接收模块61,用于接收所述互联网终端发送的视频显示请求;
获取模块62,用于根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据;
转换模块63,用于将所述目标视联网视频数据转换为rtmp视频数据;
第一发送模块64,用于将所述rtmp视频数据发送给所述互联网终端,以使所述互联网终端显示所述rtmp视频数据。
可选地,所述转换模块包括:
解析子模块,用于对所述目标视联网视频数据进行解析处理,获得以太网头部、用户协议数据头部和纯视频数据,其中,所述用户协议头部至少包括:帧率、码率、分辨率和时间戳信息;
封装子模块,用于按照rtmp协议对所述用户协议数据头部进行封装,获得rtmp协议头部;
确定子模块,用于根据所述以太网头部、ip协议头部、tcp协议头部、所述rtmp协议头部和所述纯视频数据,确定所述rtmp视频数据。
可选地,所述流媒体模块安装于所述视联网服务器或者所述流媒体模块安装于所述互联网终端,所述确定子模块,包括:
第一获得子单元,用于在所述流媒体模块安装于视联网服务器时,调用所述视联网服务器自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据;
第二获得子单元,用于在所述流媒体模块安装于互联网终端时,调用所述互联网终端自带的网络协议栈,对所述纯视频数据添加所述以太网头部、所述ip协议头部、所述tcp协议头部和所述rtmp协议头部,获得所述rtmp视频数据。
请参考图7,图7示出了本发明一实施例提出的视频数据传输装置70的结构框图,应用于视频数据传输系统中的互联网终端,所述视频数据传输系统还包括流媒体模块和视联网服务器,所述视联网服务器与所述流媒体模块通过视联网连接,所述流媒体模块与所述互联网终端通过互联网连接;该装置具体可以包括如下模块:
第二发送模块71,用于在检测到用户触发的针对目标采集终端的视频显示请求的情况下,将所述视频显示请求发送给所述流媒体模块;
第二接收模块72,用于接收所述流媒体模块返回的rtmp视频数据,所述rtmp视频数据是所述流媒体模块根据所述视频显示请求,从所述视联网服务器获取目标视联网视频数据后,对所述目标视联网视频数据进行转换后得到的;
显示模块73,用于调用播放插件,显示所述rtmp视频数据。
本发明实施例还提供了一种视频数据传输装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读,当由所述一个或多个处理器执行时,使得所述装置执行如本发明实施例任一所述的视频数据传输方法。
本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序使得处理器执行如本发明实施例所述的视频数据传输方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
视联网是网络发展的重要里程碑,是一个实时网络,能够实现高清视频实时传输,将众多互联网应用推向高清视频化,高清面对面。
视联网采用实时高清视频交换技术,可以在一个网络平台上将所需的服务,如高清视频会议、视频监控、智能化监控分析、应急指挥、数字广播电视、延时电视、网络教学、现场直播、vod点播、电视邮件、个性录制(pvr)、内网(自办)频道、智能化视频播控、信息发布等数十种视频、语音、图片、文字、通讯、数据等服务全部整合在一个系统平台,通过电视或电脑实现高清品质视频播放。
为使本领域技术人员更好地理解本发明实施例,以下对视联网进行介绍:
视联网所应用的部分技术如下所述:
网络技术(networktechnology)
视联网的网络技术创新改良了传统以太网(ethernet),以面对网络上潜在的巨大视频流量。不同于单纯的网络分组包交换(packetswitching)或网络电路交换(circuitswitching),视联网技术采用packetswitching满足streaming需求。视联网技术具备分组交换的灵活、简单和低价,同时具备电路交换的品质和安全保证,实现了全网交换式虚拟电路,以及数据格式的无缝连接。
交换技术(switchingtechnology)
视联网采用以太网的异步和包交换两个优点,在全兼容的前提下消除了以太网缺陷,具备全网端到端无缝连接,直通用户终端,直接承载ip数据包。用户数据在全网范围内不需任何格式转换。视联网是以太网的更高级形态,是一个实时交换平台,能够实现目前互联网无法实现的全网大规模高清视频实时传输,将众多网络视频应用推向高清化、统一化。
服务器技术(servertechnology)
视联网和统一视频平台上的服务器技术不同于传统意义上的服务器,它的流媒体传输是建立在面向连接的基础上,其数据处理能力与流量、通讯时间无关,单个网络层就能够包含信令及数据传输。对于语音和视频业务来说,视联网和统一视频平台流媒体处理的复杂度比数据处理简单许多,效率比传统服务器大大提高了百倍以上。
储存器技术(storagetechnology)
统一视频平台的超高速储存器技术为了适应超大容量和超大流量的媒体内容而采用了最先进的实时操作系统,将服务器指令中的节目信息映射到具体的硬盘空间,媒体内容不再经过服务器,瞬间直接送达到用户终端,用户等待一般时间小于0.2秒。最优化的扇区分布大大减少了硬盘磁头寻道的机械运动,资源消耗仅占同等级ip互联网的20%,但产生大于传统硬盘阵列3倍的并发流量,综合效率提升10倍以上。
网络安全技术(networksecuritytechnology)
视联网的结构性设计通过每次服务单独许可制、设备与用户数据完全隔离等方式从结构上彻底根除了困扰互联网的网络安全问题,一般不需要杀毒程序、防火墙,杜绝了黑客与病毒的攻击,为用户提供结构性的无忧安全网络。
服务创新技术(serviceinnovationtechnology)
统一视频平台将业务与传输融合在一起,不论是单个用户、私网用户还是一个网络的总合,都不过是一次自动连接。用户终端、机顶盒或pc直接连到统一视频平台,获得丰富多彩的各种形态的多媒体视频服务。统一视频平台采用“菜谱式”配表模式来替代传统的复杂应用编程,可以使用非常少的代码即可实现复杂的应用,实现“无限量”的新业务创新。
视联网的组网如下所述:
视联网是一种集中控制的网络结构,该网络可以是树型网、星型网、环状网等等类型,但在此基础上网络中需要有集中控制节点来控制整个网络。
如图8所示,视联网分为接入网和城域网两部分。
接入网部分的设备主要可以分为3类:节点服务器,接入交换机,终端(包括各种机顶盒、编码板、存储器等)。节点服务器与接入交换机相连,接入交换机可以与多个终端相连,并可以连接以太网。
其中,节点服务器是接入网中起集中控制功能的节点,可控制接入交换机和终端。节点服务器可直接与接入交换机相连,也可以直接与终端相连。
类似的,城域网部分的设备也可以分为3类:城域服务器,节点交换机,节点服务器。城域服务器与节点交换机相连,节点交换机可以与多个节点服务器相连。
其中,节点服务器即为接入网部分的节点服务器,即节点服务器既属于接入网部分,又属于城域网部分。
城域服务器是城域网中起集中控制功能的节点,可控制节点交换机和节点服务器。城域服务器可直接连接节点交换机,也可直接连接节点服务器。
由此可见,整个视联网络是一种分层集中控制的网络结构,而节点服务器和城域服务器下控制的网络可以是树型、星型、环状等各种结构。
形象地称,接入网部分可以组成统一视频平台(虚线圈中部分),多个统一视频平台可以组成视联网;每个统一视频平台可以通过城域以及广域视联网互联互通。
视联网设备分类
1.1本发明实施例的视联网中的设备主要可以分为3类:服务器,交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。视联网整体上可以分为城域网(或者国家网、全球网等)和接入网。
1.2其中接入网部分的设备主要可以分为3类:节点服务器,接入交换机(包括以太网网关),终端(包括各种机顶盒,编码板,存储器等)。
各接入网设备的具体硬件结构为:
节点服务器:
如图9所示,主要包括网络接口模块901、交换引擎模块902、cpu模块903、磁盘阵列模块904;
其中,网络接口模块901,cpu模块903、磁盘阵列模块904进来的包均进入交换引擎模块902;交换引擎模块902对进来的包进行查地址表905的操作,从而获得包的导向信息;并根据包的导向信息把该包存入对应的包缓存器906的队列;如果包缓存器906的队列接近满,则丢弃;交换引擎模902轮询所有包缓存器队列,如果满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。磁盘阵列模块904主要实现对硬盘的控制,包括对硬盘的初始化、读写等操作;cpu模块903主要负责与接入交换机、终端(图中未示出)之间的协议处理,对地址表905(包括下行协议包地址表、上行协议包地址表、数据包地址表)的配置,以及,对磁盘阵列模块904的配置。
接入交换机:
如图10所示,主要包括网络接口模块(下行网络接口模块1001、上行网络接口模块1002)、交换引擎模块1003和cpu模块1004;
其中,下行网络接口模块1001进来的包(上行数据)进入包检测模块1005;包检测模块1005检测包的目地地址(da)、源地址(sa)、数据包类型及包长度是否符合要求,如果符合,则分配相应的流标识符(stream-id),并进入交换引擎模块1003,否则丢弃;上行网络接口模块1002进来的包(下行数据)进入交换引擎模块1003;cpu模块1004进来的数据包进入交换引擎模块1003;交换引擎模块1003对进来的包进行查地址表1006的操作,从而获得包的导向信息;如果进入交换引擎模块1003的包是下行网络接口往上行网络接口去的,则结合流标识符(stream-id)把该包存入对应的包缓存器1007的队列;如果该包缓存器1007的队列接近满,则丢弃;如果进入交换引擎模块1003的包不是下行网络接口往上行网络接口去的,则根据包的导向信息,把该数据包存入对应的包缓存器1007的队列;如果该包缓存器1007的队列接近满,则丢弃。
交换引擎模块1003轮询所有包缓存器队列,在本发明实施例中分两种情形:
如果该队列是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零;3)获得码率控制模块产生的令牌;
如果该队列不是下行网络接口往上行网络接口去的,则满足以下条件进行转发:1)该端口发送缓存未满;2)该队列包计数器大于零。
码率控制模块1008是由cpu模块1004来配置的,在可编程的间隔内对所有下行网络接口往上行网络接口去的包缓存器队列产生令牌,用以控制上行转发的码率。
cpu模块1004主要负责与节点服务器之间的协议处理,对地址表1006的配置,以及,对码率控制模块1008的配置。
以太网协转网关:
如图11所示,主要包括网络接口模块(下行网络接口模块1101、上行网络接口模块1102)、交换引擎模块1103、cpu模块1104、包检测模块1105、码率控制模块1108、地址表1106、包缓存器1107和mac添加模块1109、mac删除模块1110。
其中,下行网络接口模块1101进来的数据包进入包检测模块1105;包检测模块1105检测数据包的以太网macda、以太网macsa、以太网lengthorframetype、视联网目地地址da、视联网源地址sa、视联网数据包类型及包长度是否符合要求,如果符合则分配相应的流标识符(stream-id);然后,由mac删除模块1110减去macda、macsa、lengthorframetype(2byte),并进入相应的接收缓存,否则丢弃;
下行网络接口模块1101检测该端口的发送缓存,如果有包则根据包的视联网目地地址da获知对应的终端的以太网macda,添加终端的以太网macda、以太网协转网关的macsa、以太网lengthorframetype,并发送。
以太网协转网关中其他模块的功能与接入交换机类似。
终端:
主要包括网络接口模块、业务处理模块和cpu模块;例如,机顶盒主要包括网络接口模块、视音频编解码引擎模块、cpu模块;编码板主要包括网络接口模块、视音频编码引擎模块、cpu模块;存储器主要包括网络接口模块、cpu模块和磁盘阵列模块。
1.3城域网部分的设备主要可以分为2类:节点服务器,节点交换机,城域服务器。其中,节点交换机主要包括网络接口模块、交换引擎模块和cpu模块;城域服务器主要包括网络接口模块、交换引擎模块和cpu模块构成。
2、视联网数据包定义
2.1接入网数据包定义
接入网的数据包主要包括以下几部分:目的地址(da)、源地址(sa)、保留字节、payload(pdu)、crc。
如下表所示,接入网的数据包主要包括以下几部分:
其中:
目的地址(da)由8个字节(byte)组成,第一个字节表示数据包的类型(例如各种协议包、组播数据包、单播数据包等),最多有256种可能,第二字节到第六字节为城域网地址,第七、第八字节为接入网地址;
源地址(sa)也是由8个字节(byte)组成,定义与目的地址(da)相同;
保留字节由2个字节组成;
payload部分根据不同的数据报的类型有不同的长度,如果是各种协议包的话是64个字节,如果是单组播数据包话是32+1024=1056个字节,当然并不仅仅限于以上2种;
crc有4个字节组成,其计算方法遵循标准的以太网crc算法。
2.2城域网数据包定义
城域网的拓扑是图型,两个设备之间可能有2种、甚至2种以上的连接,即节点交换机和节点服务器、节点交换机和节点交换机、节点交换机和节点服务器之间都可能超过2种连接。但是,城域网设备的城域网地址却是唯一的,为了精确描述城域网设备之间的连接关系,在本发明实施例中引入参数:标签,来唯一描述一个城域网设备。
本说明书中标签的定义和mpls(multi-protocollabelswitch,多协议标签交换)的标签的定义类似,假设设备a和设备b之间有两个连接,那么数据包从设备a到设备b就有2个标签,数据包从设备b到设备a也有2个标签。标签分入标签、出标签,假设数据包进入设备a的标签(入标签)是0x0000,这个数据包离开设备a时的标签(出标签)可能就变成了0x0001。城域网的入网流程是集中控制下的入网过程,也就意味着城域网的地址分配、标签分配都是由城域服务器主导的,节点交换机、节点服务器都是被动的执行而已,这一点与mpls的标签分配是不同的,mpls的标签分配是交换机、服务器互相协商的结果。
如下表所示,城域网的数据包主要包括以下几部分:
即目的地址(da)、源地址(sa)、保留字节(reserved)、标签、payload(pdu)、crc。其中,标签的格式可以参考如下定义:标签是32bit,其中高16bit保留,只用低16bit,它的位置是在数据包的保留字节和payload之间。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参考根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提出的视频数据传输方法、视频数据传输装置以及计算机可读存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。