一种跨平台高清音视频播放方法、系统及客户端与流程

文档序号:14749658发布日期:2018-06-22 11:08阅读:146来源:国知局

本发明涉及可视化大墙显示领域,尤其涉及一种跨平台高清音视频播放方法及系统。



背景技术:

现有可视化大墙显示控制系统,在不同平台移动端预览显示音视频信号源,需熟悉不同的平台开发环境及编程语言,同一个功能需建立不同的工程,实现维护不同的代码。

当前现有的系统是通过流媒体服务对视频数据流进行解码,再将一帧帧画面传送给客户端进行显示,然而这种方式会导致帧率降低,画面不流畅。且由于客户端涉及到android、iOS、Windows等不同的平台,若是不同平台自己各做一套视频解码,开发时间较长,维护麻烦,成本高,所以当前的技术以降低视频观看质量的方式解决以上问题,但同时低观看质量的视频也无法满足客户的高需求,降低了用户体验性。



技术实现要素:

本发明实施例提供了一种跨平台高清音视频播放方法、系统及客户端,能够在不同平台的客户端实现音视频高度可视化,增强用户体验,且进一步提高可视化大墙显示控制系统的工作效率及系统易用性,且提高系统开发效率及维护成本。

本发明实施例提供了一种跨平台高清音视频播放方法,包括:

S1:客户端通过Cocos2d-X建立项目,并通过WebRTC开源代码编译生成与所述客户端的平台类型对应的WebRTC动态库,再在所述项目的工程文件上加载所述WebRTC动态库;

S2:在所述项目中,所述客户端对所述WebRTC动态库的接口进行封装;

S3:所述客户端向流媒体服务器发送音视频请求,使得所述流媒体服务器向与所述音视频请求对应的音视频设备获取音视频数据;

S4:所述客户端获取到所述流媒体服务器通过WebRTC进行编码后的所述音视频数据,编码后的所述音视频数据包括编码后的音频数据和编码后的视频数据;

S5:所述客户端通过封装后的所述接口对编码后的所述音频数据进行解码并播放,同时通过封装后的所述接口对编码后的所述视频数据进行解码,再通过Cocos2d-X的上层应用对解码后的所述视频数据进行渲染显示。

优选地,步骤S5具体包括:

S41:所述客户端通过封装后的所述接口对编码后的所述音频数据进行解码并播放;

S42:所述客户端通过封装后的所述接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的所述视频数据,再通过所述Cocos2d-X的上层应用对所述解码后的视频数据进行渲染显示。

其中,步骤S41与步骤S42同时进行。

优选地,所述解码后的视频数据为YUV格式。

优选地,步骤S42具体包括:

所述客户端通过封装后的所述接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的视频数据,再将所述解码后的所述视频数据从YUV格式转换为RGB格式,然后通过所述Cocos2d-X的上层应用对转换格式后的所述视频数据进行渲染显示。

优选地,本发明实施例还提供了一种客户端,包括

加载单元,用于通过Cocos2d-X建立项目,并通过WebRTC开源代码编译生成与所述客户端的平台类型对应的WebRTC动态库,再在所述项目的工程文件上加载所述WebRTC动态库;

封装单元,用于在所述项目中,对所述WebRTC动态库的接口进行封装;

请求单元,用于向流媒体服务器发送音视频请求,使得所述流媒体服务器向与所述音视频请求对应的音视频设备获取音视频数据;

获取单元,用于获取到所述流媒体服务器通过WebRTC进行编码后的所述音视频数据,编码后的所述音视频数据包括编码后的音频数据和编码后的视频数据;

解码单元,用于通过封装后的所述接口对编码后的所述音频数据进行解码并播放,同时通过封装后的所述接口对编码后的所述视频数据进行解码,再通过Cocos2d-X的上层应用对解码后的所述视频数据进行渲染显示。

优选地,解码单元包括:

音频解码单元,用于通过封装后的所述接口对编码后的所述音频数据进行解码并播放;

视频解码单元,用于通过封装后的所述接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的所述视频数据,再通过所述Cocos2d-X的上层应用对所述解码后的视频数据进行渲染显示。

其中,所述音频解码单元和所述视频解码单元同时触发。

优选地,所述解码后的视频数据为YUV格式。

优选地,所述视频解码单元还用于通过封装后的所述接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的视频数据,再将所述解码后的所述视频数据从YUV格式转换为RGB格式,然后通过所述Cocos2d-X的上层应用对转换格式后的所述视频数据进行渲染显示。

优选地,本发明还提供了一种跨平台高清音视频播放系统,包括:流媒体服务器、音视频设备和如以上所述的客户端;

所述流媒体服务器和所述客户端通信连接;

所述流媒体服务器和所述音视频设备通信连接。

优选地,本发明提供的一种跨平台高清音视频播放系统还包括:主服务器;

所述主服务器和所述流媒体服务器通信连接;

所述主服务器和所述客户端通信连接;

所述主服务器用于接收到所述客户端发送的音视频请求,并将所述音视频请求发送至所述流媒体服务器。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明提供了一种跨平台高清音视频播放方法、系统及客户端,该方法包括:客户端通过Cocos2d-X建立项目,并通过WebRTC开源代码编译生成与客户端的平台类型对应的WebRTC动态库,再在该项目的工程文件上加载WebRTC动态库;在该项目中,客户端对WebRTC动态库的接口进行封装;客户端向流媒体服务器发送音视频请求,使得流媒体服务器向与音视频请求对应的音视频设备获取音视频数据;客户端获取到流媒体服务器通过WebRTC进行编码后的音视频数据,编码后的音视频数据包括编码后的音频数据和编码后的视频数据;客户端通过封装后的接口对编码后的音频数据进行解码并播放,同时通过封装后的接口对编码后的视频数据进行解码,再通过Cocos2d-X的上层应用对解码后的视频数据进行渲染显示。本发明采用Cocos2d-X开发框架实现了不同平台客户端的同一功能界面,将Cocos2d-X技术框架和WebRTC开源库集成开发,有效的解决了不同平台音视频实时编解码、传输、播放问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明提供的一种跨平台高清音视频播放方法的一个实施例的流程示意图;

图2为本发明提供的一种客户端的一个实施例的结构示意图;

图3为本发明提供的一种跨平台高清音视频播放系统的一个实施例的结构示意图。

具体实施方式

本发明实施例提供了一种跨平台高清音视频播放方法、系统及客户端,能够在不同平台的客户端实现音视频高度可视化,增强用户体验,且进一步提高可视化大墙显示控制系统的工作效率及系统易用性,且提高系统开发效率及维护成本。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明提供的一种跨平台高清音视频播放方法的一个实施例,包括:

101、客户端通过Cocos2d-X建立项目,并通过WebRTC开源代码编译生成与客户端的平台类型对应的WebRTC动态库,再在项目的工程文件上加载WebRTC动态库;

Cocos2d-x是一个开源的移动2D游戏框架,Cocos2d-x项目可以运行在iOS,android,黑莓Blackberry等操作系统中,它支持mac\\windows\\linux等操作系统界面,开发者编写的源代码很容易在桌面操作系统中编辑和调试。

WebRTC是一个实时视频语音对讲的开源库,里面包含包括音视频的采集、编解码、网络传输、显示等功能。WebRTC在不同平台可以编译生成不同的平台动态库,可以在相应平台下使用。所以不同平台下的接入使用不同的方式,是平台相关的。

在本实施例中,客户端的平台不做具体限制,可以为android,也可以为iOS,也可以为Windows等等。可以理解的是,客户端上安装有Cocos2d-X和WebRTC。

客户端通过Cocos2d-X建立相应的项目,然后通过WebRTC开源代码编译生成与客户端的平台类型对应的WebRTC动态库,如客户端若为android平台则生成符合JNI规范的.so文件,若为iOS平台则生成.framework文件,若为Windows平台则生成.dll文件等,然后在该项目的工程文件上加载该WebRTC动态库。需要说明的是,项目的工程文件也是与客户端的平台类型相对应的。

102、在项目中,客户端对WebRTC动态库的接口进行封装;

客户端在Cocos2d-X项目中,对WebRTC动态库的接口进行封装,以实现向外暴露跨平台的统一接口,且使得客户端在编码过程中能够尽量屏蔽平台相关性。需要说明的是,若客户端为JAVA平台通过JNI编程技术封装引入接口,若为iOS按照正常的.framework的动态库使用方法,若为windows则是DLL正常使用方法,然后在cocos2d-x应用层采用统一的接口进行封装,封装之后在客户端通过C++编辑使用WebRTC接口时,就不必关注底层是怎么实现的,也不必关注平台类型。

103、客户端向流媒体服务器发送音视频请求,使得流媒体服务器向与音视频请求对应的音视频设备获取音视频数据;

在客户端上的准备完成后,客户端向流媒体服务器发送音视频请求,流媒体服务器在接收到请求后,主动与客户端建立WebRTC连接,并向与音视频请求对应的音视频设备获取音视频数据。

104、客户端获取到流媒体服务器通过WebRTC进行编码后的音视频数据,编码后的音视频数据包括编码后的音频数据和编码后的视频数据;

流媒体服务在向音视频设备获取到音视频数据后,通过流媒体服务上的WebRTC对音视频数据进行编码,WebRTC并将该编码后的数据发送至客户端。

105、客户端通过封装后的接口对编码后的音频数据进行解码并播放;

106、客户端通过封装后的接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的视频数据,再将解码后的视频数据从YUV格式转换为RGB格式,然后通过Cocos2d-X的上层应用对转换格式后的视频数据进行渲染显示。

在本实施例中,步骤105和步骤106同时进行。

客户端获取到音视频数据后,需要对其进行解码播放,本发明将音频数据和视频数据分开同时处理。音频数据可以通过WebRTC提供的且封装后的接口进行解码并播放,视频数据也可以通过WebRTC提供的且封装后的接口进行解码,但是WebRTC在不同平台下的视频播放渲染接口需要传入平台相关的参数,在Cocos2d-X框架下很难做到,因此无法做到直接调用WebRTC的接口进行视频播放控制。且在解码后的视频数据为YUV格式,本发明通过WebRTC上的预置回调函数的接口,该函数接口可以为AddRenderer(),向该接口输入回调函数地址后,可以将解码后的视频数据调回来,然后将数据从YUV格式转化成Cocos2d-X能够渲染的格式(RGB),最后通过Cocos2d-X的上层应用对视频数据完成渲染显示。

本发明在不同平台的客户端上通过Cocos2d-X建立项目,将WebRTC开源代码编译生成对客户端平台类型对应的动态库,再将该动态库加载至该项目的工程文件上,然后对WebRTC动态库的接口进行封装。客户端在获取到流媒体服务器上的WebRTC进行编码后的音视频数据后,通过该封装后的接口对音频数据直接解码并播放,同时通过该接口对视频数据进行解码,再通过Cocos2d-X的上层应用对解码后的视频数据进行渲染。本发明采用Cocos2d-X开发框架实现了不同平台客户端的同一功能界面,将Cocos2d-X技术框架和WebRTC开源库集成开发,有效的解决了不同平台音视频实时编解码、传输、播放问题。

以上是对本发明提供的一种跨平台高清音视频播放方法进行的详细说明,以下对本发明提供的一种客户端进行说明,请参阅图2,本发明提供的一种客户端的一个实施例,包括:

加载单元201,用于通过Cocos2d-X建立项目,并通过WebRTC开源代码编译生成与客户端的平台类型对应的WebRTC动态库,再在项目的工程文件上加载WebRTC动态库;

封装单元202,用于在项目中,对WebRTC动态库的接口进行封装;

请求单元203,用于向流媒体服务器发送音视频请求,使得流媒体服务器向与音视频请求对应的音视频设备获取音视频数据;

获取单元204,用于获取到流媒体服务器通过WebRTC进行编码后的音视频数据,编码后的音视频数据包括编码后的音频数据和编码后的视频数据;

解码单元205,用于通过封装后的接口对编码后的音频数据进行解码并播放,同时通过封装后的接口对编码后的视频数据进行解码,再通过Cocos2d-X的上层应用对解码后的视频数据进行渲染显示。

更进一步地,解码单元205包括:

音频解码单元2051,用于通过封装后的接口对编码后的音频数据进行解码并播放;

视频解码单元2052,用于通过封装后的接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的视频数据,再通过Cocos2d-X的上层应用对解码后的视频数据进行渲染显示。

其中,音频解码单元2051和视频解码单元2052同时触发。

更进一步地,解码后的视频数据为YUV格式。

更进一步地,视频解码单元2052还用于通过封装后的接口对编码后的视频数据进行解码,并通过预置回调函数获取解码后的视频数据,再将解码后的视频数据从YUV格式转换为RGB格式,然后通过Cocos2d-X的上层应用对转换格式后的视频数据进行渲染显示。

以上是对本发明提供的一种客户端的结构进行的详细说明,以下对本发明提供的一种跨平台高清音视频播放系统,请参阅图3,本发明提供的一种跨平台高清音视频播放系统的一个实施例包括:流媒体服务器301、音视频设备302和如以上所述的客户端303;

流媒体服务器301和客户端303通信连接;

流媒体服务器301和音视频设备302通信连接。

更进一步地,本发明提供的一种跨平台高清音视频播放系统还包括:主服务器304;

主服务器304和流媒体服务器301通信连接;

主服务器304和客户端303通信连接;

主服务器304用于接收到客户端303发送的音视频请求,并将音视频请求发送至流媒体服务器301。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1