基于RTMP的屏幕数据的视频流播放方法、装置和系统与流程

文档序号:20949237发布日期:2020-06-02 20:02阅读:569来源:国知局
基于RTMP的屏幕数据的视频流播放方法、装置和系统与流程

本发明涉及远程真机测试技术领域,特别是一种基于实时消息传输协议rtmp的屏幕数据的视频流播放方法、装置、系统、计算机存储介质和计算设备。



背景技术:

远程真机租用平台是一种远程控制手机使用的平台,具有安装、截图、shell、文件传输等功能。在移动测试中,远程真机租用平台会提供云端的真机操作,从而为用户提供移动端app的功能模块、性能、安全、容量、兼容性、易用性、硬件环境、交叉事件、接口等测试。在测试中,手机端屏幕数据被传输至显示客户端进行实时显示,以使用户随时获知测试情况。

现有技术中,通过远程真机租用平台进行移动测试时,通常采用开源工具minicap来实现手机屏幕信息传输。由于minicap工具在手机上的使用严格依赖于手机的android版本,并且minicap的实现方式采用了android的私有api(applicationprogramminginterface,应用程序编程接口),使得现有的手机端屏幕数据的显示方式受到种种限制。并且,现有的手机屏幕显示方式还存在延时高等问题,用户使用体验较低。

因此,亟需一种低时延、易拓展的在云端实时播放手机端屏幕数据的技术。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于实时消息传输协议rtmp的屏幕数据的视频流播放方法、装置、系统、计算机存储介质和计算设备。

根据本发明实施例的一方面,提供了一种基于实时消息传输协议rtmp的屏幕数据的视频流播放系统,包括:

推流端,用于获取移动设备的屏幕的视频流数据,将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器;

所述rtmp流服务器,用于接收所述推流端推流的视频流数据,并响应拉流客户端对所述视频流数据的播放请求;以及

所述拉流客户端,用于向所述rtmp流服务器发送对所述视频流数据的播放请求,并在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述视频流播放系统应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选的,所述rtmp流服务器包括livego服务器;

所述rtmp流服务器还用于:

在接收所述推流端推流的视频流数据之前,启动livego服务端。

可选地,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

可选地,所述推流端还用于:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

可选地,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

可选地,所述推流端还用于:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

可选地,所述推流端还用于:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

可选地,所述拉流客户端的播放协议包括以下任意之一:

rtmp、http-flv、hls。

可选地,所述拉流客户端包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的另一方面,还提供了一种基于rtmp的屏幕数据的视频流播放方法,应用于推流端,包括:

获取移动设备的屏幕的视频流数据;

将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

可选地,获取移动设备的屏幕的视频流数据,包括:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

可选地,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

可选地,通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

可选地,通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器,进一步包括:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

根据本发明实施例的另一方面,还提供了一种基于rtmp的屏幕数据的视频流播放方法,应用于rtmp流服务器,包括:

接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据;

响应拉流客户端对所述视频流数据的播放请求,以便所述拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,所述rtmp流服务器包括livego服务器;

在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,所述方法还包括:

启动livego服务端。

根据本发明实施例的另一方面,还提供了一种基于rtmp的屏幕数据的视频流播放方法,应用于拉流客户端,包括:

向rtmp流服务器发送对被推送至所述rtmp流服务器的移动设备的屏幕的视频流数据的播放请求;

在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

可选的,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,当所述rtmp流服务器为livego服务器时,从所述rtmp流服务器拉取所述视频流数据进行播放的协议包括以下任意之一:

rtmp、http-flv、hls。

可选地,所述拉流客户端包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的另一方面,还提供了一种推流端,包括:

数据获取模块,适于获取移动设备的屏幕的视频流数据;以及

转换推流模块,适于将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述推流端应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

可选地,所述数据获取模块还适于:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

可选地,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

可选地,所述转换推流模块还适于:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

可选地,所述转换推流模块还适于:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

根据本发明实施例的另一方面,还提供了一种rtmp流服务器,包括:

推流接收模块,适于接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据;以及

拉流响应模块,适于响应拉流客户端对所述视频流数据的播放请求,以便所述拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述rtmp流服务器应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,所述rtmp流服务器为livego服务器;

所述rtmp流服务器还包括:

服务端启动模块,适于在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,启动livego服务端。

根据本发明实施例的另一方面,还提供了一种拉流客户端,包括:

请求发送模块,适于向rtmp流服务器发送对被推送至所述rtmp流服务器的移动设备的屏幕的视频流数据的播放请求;以及

拉流播放模块,适于在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

可选地,所述拉流客户端应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

可选地,当所述rtmp流服务器为livego服务器时,所述拉流客户端的播放协议包括以下任意之一:

rtmp、http-flv、hls。

可选地,所述拉流播放模块包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的又一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上文中任一项所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

根据本发明实施例的再一方面,还提供了一种计算设备,包括:

处理器;以及

存储有计算机程序代码的存储器;

当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上文中任一项所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

本发明实施例提出的基于rtmp的屏幕数据的视频流播放方案,其架构主要包括推流端、rtmp流服务器和拉流客户端,其中,通过推流端获取移动设备的屏幕的视频流数据,转换成rtmp格式后推流至rtmp流服务器,rtmp流服务器接收rtmp推流的视频流数据并响应拉流客户端的播放请求,拉流客户端在接收到rtmp流服务器对播放请求的响应后,从rtmp流服务器拉取视频流数据进行播放,实现了在云端实时播放移动设备的屏幕数据,适用于当通过远程真机租用平台进行移动测试时显示手机端的屏幕信息的场景。本发明实施例的方案采用rtmp协议进行视频流数据的推流和拉流播放,由于rtmp流的延迟较低,且能长时间不断流播放,本发明实施例的方案特别适合于长时间播放的场合。同时,本发明实施例提供的视频流播放系统的整体架构清晰,架构各组成部分之间具有较低耦合性,rtmp推流端、流服务器、拉流端可任意迁移而不影响系统的整体性能,增强了系统的易拓展性。

进一步地,rtmp流服务器采用livego服务器。livego服务器基于golang开发,支持海量轻量级协程,具有支持rtmp推流和拉流、统计信息、http在线查看流状态等优点。通过采用livego服务器来实现rtmp推流和拉流以完成视频流的播放显示,提高了rtmp流服务器处理多进程并发的性能,同时为用户在进行拉流播放时提供更好的显示效果和更佳的操作体验。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一实施例的基于rtmp的屏幕数据的视频流播放系统的架构示意图;

图2示出了根据本发明另一实施例的基于rtmp的屏幕数据的视频流播放系统的架构示意图;以及

图3示出了基于minicap工具的手机屏幕的图像显示效果;

图4示出了根据本发明实施例的基于rtmp的屏幕数据的视频流播放系统的手机屏幕的拉流显示效果;

图5示出了根据本发明一实施例的应用于推流端的基于rtmp的屏幕数据的视频流播放方法的流程图;

图6示出了据本发明一实施例的应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法的流程图;

图7示出了根据本发明一实施例的应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法的流程图;

图8示出了根据本发明一实施例的结合推流端、rtmp流服务器和拉流客户端的基于rtmp的屏幕数据的视频流播放方法的流程示意图;

图9示出了根据本发明一实施例的推流端的结构示意图;

图10示出了根据本发明一实施例的rtmp流服务器的结构示意图;以及

图11示出了根据本发明一实施例的拉流客户端的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在移动测试中,远程真机租用平台会提供云端的真机操作,手机端屏幕数据则被传输至显示客户端进行实时显示,以使用户随时获知测试情况。现有的远程真机租用平台通常采用开源工具minicap来实现手机屏幕信息的传输和显示,然而,由于minicap工具是用ndk开发的,其实现方式采用了android的隐藏私有api,因此minicap工具的使用必须严格依赖于手机的android版本和与该android版本相应的minicap文件,而且还会受控于google对该私有api的访问限制,这都大大限制了基于minicap工具的屏幕拷贝方案的普适性。因此,在改进手机的屏幕显示方式时,使用视频流的方式进行云端显示。

rtmp(realtimemessagingprotocol,实时消息传输协议)是adobesystems公司提出的应用层的协议,其基于tcp(transmissioncontrolprotocol,传输控制协议),是一个协议族,包括rtmp基本协议以及rtmpt、rtmps、rtmpe等多种变种。rtmp是一种设计用来进行实时数据通信的网络协议,提供了一种能够全面并且实现简单的协议来保证流信息的传输,主要用来在flash/air平台和支持rtmp协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括adobemediaserver、ultrantmediaserver、red5等。基于rtmp对adobe的良好支持、适合长时间播放、延迟较低等特点,rtmp在流媒体直播(如视频直播)等领域得到广泛应用。发明人考虑到移动测试中在云端实时播放移动设备屏幕数据的需求,使用rtmp协议完成移动设备屏幕的视频流的播放显示工作。

为解决上述技术问题,本发明实施例提出了一种基于rtmp的屏幕数据的视频流播放系统。图1示出了根据本发明一实施例的基于rtmp的屏幕数据的视频流播放系统的架构示意图。参见图1,该系统主要包括:推流端110、rtmp流服务器120以及拉流客户端130。

在本发明实施例中,推流端110用于获取移动设备的屏幕的视频流数据,将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器120。rtmp流服务器120用于接收由推流端110推流至的视频流数据,并响应拉流客户端130对该视频流数据的播放请求。拉流客户端130用于向rtmp流服务器120发送对该视频流数据的播放请求,并在接收到rtmp流服务器120对该播放请求的响应后,从rtmp流服务器120拉取该视频流数据进行播放。

在本实施例提供的系统中,通过推流端110获取移动设备的屏幕的视频流数据,转换成rtmp格式后推流至rtmp流服务器120,rtmp流服务器120接收rtmp推流的视频流数据并响应拉流客户端130的播放请求,拉流客户端130在接收到rtmp流服务器120对播放请求的响应后,从rtmp流服务器120拉取视频流数据进行播放,实现了在云端实时播放移动设备的屏幕数据。本发明实施例的方案采用rtmp协议进行视频流数据的推流和拉流播放,由于rtmp流的延迟较低,且能长时间不断流播放,本发明实施例的方案特别适合于长时间播放的场合。同时,本发明实施例提供的视频流播放系统的架构各组成部分之间具有较低耦合性,推流端110、rtmp流服务器120、拉流客户端130可任意迁移而不影响系统的整体性能,增强了系统的易拓展性。

基于以上特点,本发明实施例提供的基于rtmp的屏幕数据的视频流播放系统可以很好地应用于当通过远程真机租用平台进行移动测试时显示移动设备的屏幕信息的场景,以便为用户提供更佳的真机操作体验。

在实际应用场景中,上文提及的移动设备可以包括手机、平板电脑、智能手表等智能移动终端,其上可以搭载操作系统,并拥有接入互联网的能力。优选地,移动设备上搭载android系统。推流端110可以是服务器或pc(personalcomputer,个人计算机),其具有数据传输和数据解析的功能。当推流端110为服务器时,rtmp流服务器120与推流端110可以集成在一台服务器上,也可以分开设置。拉流客户端130可以为显示器,其上搭载用于视频流播放的软件类客户端,例如浏览器、媒体播放器等。

livego服务器是基于golang(thegoprogramminglanguage,go编程语言)开发的rtmp服务器。golang语言基本支持多核cpu均衡使用,支持海量轻量级线程,提高其并发量。golang在语言级别解决了当前开源srs(simple-rtmp-server)在需要多核运行时只能启动多个srs监听不同的端口来提高并发量、nginx-rtmp需要二次开发来实现在启动多进程后报文在多个进程内的转发的问题,开发效率远远超过c/c++。基于golang开发的livego服务器,其安装和使用都非常简单,可跨平台运行,处理多进程并发的性能高,且支持常用的传输协议、文件格式和编码格式。livego服务器支持的传输协议包括:rtmp、amf(actionmessageformat,动作信息格式)、hls(httplivestreaming,http实时流媒体)、http-flv(flashvideo);支持的容器格式包括:flv、ts(transportstream,传送流);支持的编码格式包括:h.264、aac(advancedaudiocoding,高级音频编码)、mp3。此外,livego服务器还具有以下优点:支持rtmp推流和拉流;统计信息支持;支持http在线查看流状态等。

为了提高rtmp流服务器的性能,在本发明实施例的一种可选实施方式中,rtmp流服务器120可以包括livego服务器。

在投入屏幕显示应用前,首先安装livego直播服务器,例如,可以在云服务器端安装livego直播服务器,作为rtmp流服务器120提供服务。在一种实施方案中,可以直接下载编译好的二进制文件,然后在命令行中执行安装。在另一种实施方案中,也可以通过以下命令下载源码:gitclonehttps://github.com/gwuhaolin/livego.git,然后去livego目录中执行gobuild对源码文件进行编译,得到可执行文件。

在安装livego服务器后,在接收推流端110推流的视频流数据之前,还需在rtmp流服务器120(即,livego服务器)中启动livego服务端,用于提供rtmp推流和拉流的相应服务。

下面列出了在windows环境下搭建livego服务器并启动livego服务端的命令行示例:

c:\users\phonerenter>livego.exe

2018/09/2717:12:58main.go:106:startlivego,version0.0.4

2018/09/2717:12:58main.go:40:hlslistenon:7002

2018/09/2717:12:58main.go:58:rtmplistenon:1935

2018/09/2717:12:58main.go:75:http-flvlistenon:7001

在上面示例中,在真机租用平台执行livego可执行文件进行livego服务器安装,并启动0.0.4版本livego服务端,在端口7002、1935和7001分别监听hls、rtmp和http-flv协议传输。

本实施例中通过采用livego服务器来实现rtmp推流和拉流以完成视频流的播放显示,提高了rtmp流服务器处理多进程并发的性能,同时为用户在进行拉流播放时提供更好的显示效果和更佳的操作体验。

在本发明实施例的一种可选实施方式中,推流端110所获取的移动设备的屏幕的视频流数据的数据格式可以为h.264。

h.264,同时也是mpeg-4第十部分,是itu-t的vceg(视频编码专家组)和iso/iec的mpeg(活动图像编码专家组)的联合视频组(jointvideoteam,jvt)开发的一个数字视频编码标准,具有低码率、高图像质量、容错能力强、网络适应性强的优势。由于h.264具有很高的数据压缩比率,采用h.264标准压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。

在本发明实施例的一种可选实施方式中,推流端110还可以通过执行adbforward命令建立与移动设备的通信,以从该移动设备获取移动设备采集的自身屏幕的视频流数据。

adb(androiddebugbridge,安卓调试桥)起到连接桥的作用,可以将pc和设备连接起来,进而借助adb工具可以管理设备或手机模拟器的状态。通过adbforward建立一个转发,在pc可以接收设备端server程序发出的所有数据。

进一步地,上述提及的移动设备采集的自身屏幕的视频流数据可以是由该移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。此处提及的屏幕拷贝工具可以包括scrcpy工具等,本发明不作具体限制。

mediacodec是android自带的一个api,mediacodec类可以访问底层的媒体编解码器,可以对媒体进行编/解码,是android低级别多媒体支持基础设施的一部分。通过mediacodec接口,可以将屏幕拷贝工具采集的原始视频数据编码为h.264格式的视频流数据。

在一种实施方案中,移动设备与推流端110可以通过usb或wifi连接。推流端110执行adbforward命令,建立推流端110上socket与移动设备端的屏幕拷贝工具进程的通信,从而将相应的屏幕数据获取请求发送至移动设备端,并接收移动设备端所采集的自身屏幕的视频流数据。

在本发明实施例的一种可选实施方式中,推流端110还可以通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器120。

srs定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。srs-librtmp提供了一系列接口函数,将数据按照一定格式发送到服务器,或者从服务器读取音视频数据。其中,srs-librtmp支持发布h.264裸码流,直接调用api即可将数据发送给srs,再通过rtmp协议发布到rtmp服务器。具体地,srs提供了实例srs_h264_raw_publish.c读取录制的h.264文件并发布到rtmp服务器,具体参见https://github.com/winlinvip/simple-rtmp-server/tree/develop/trunk/research/librtmp/srs_h264_raw_publish.c

进一步地,推流端110还可以通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式,并通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至rtmp流服务器120。

srs_h264_raw_publish.c读取h.264裸码流(视频流数据)后,基本上读取到的就是一个一个的h.264annexb格式的包。在将h.264的裸码流转换成rtmp时,dts(decodetimestamp,解码时间戳)和pts(presentationtimestamp,显示时间戳)由外部给出,sps(sequenceparameterset,序列参数集)和pps(pictureparameterset,图像参数集)在一个rtmp包中发送出去,rtmp包=5字节rtmp包头+h.264头+h.264数据。然后,通过srs_h264_write_raw_frames函数进行发布,完成视频流数据的转换与推流。

在本发明实施例的一种可选实施方式中,拉流客户端130可以采用以下任意之一的播放协议:rtmp、http-flv、hls。

基于livego服务器可以支持多种常用的传输协议的特性,拉流客户端130可以根据播放的实际需求,采用rtmp、http-flv、hls播放协议中的任意一种。例如,对于实时性要求高的直播场合,可以采用rtmp播放协议,对于没有实时性要求且分发量大(如点播)的场合,则可以采用http-flv或hls播放协议。

下面列出了rtmp、http-flv、hls三种播放协议各自的播放地址:

·rtmp:rtmp://localhost:1935/live/movie

·flv:http://127.0.0.1:7001/live/movie.flv

·hls:http://127.0.0.1:7002/live/movie.m3u8

在本发明实施例的一种可选实施方式中,拉流客户端130可以包括vlc(videolanclient)mediaplayer媒体播放器和/或liveplayer组件。

vlcmediaplayer是一款可播放大多数格式且无需安装编解码器包的媒体播放器。它可以播放mpeg-1、mpeg-2、mpeg-4、divx、dvd/vcd、数字卫星频道、数字地球电视频道(digitalterrestrialtelevisionchannels),以及在许多作业平台底下透过宽频ipv4、ipv6网络播放线上影片。vlcmediaplayer还可以支持播放某些没有下载完成的视频文件部份内容,因此非常适合于视频流播放的场合。

liveplayer组件为前端liverplayer组件,其嵌入例如浏览器前端web页面、微信小程序等客户端,实现对视频流数据的拉取和播放。

下面示出了拉流客户端130进行rtmp拉流播放的代码示例:

以上介绍了图1所示实施例的各个环节的多种实现方式,下面以一个具体实施例来详细介绍本发明的基于rtmp的屏幕数据的视频流播放系统的架构及其显示效果。

图2示出了根据本发明另一实施例的基于rtmp的屏幕数据的视频流播放系统的架构示意图。参见图2,该系统主要包括:推流端210、rtmp流服务器220以及拉流客户端230。其中,推流端210还与移动设备240相连接。

下面结合图2对本发明实施例提供的基于rtmp的屏幕数据的视频流播放系统的系统架构和各部分的功能进行说明。

在本实施例提供的视频流播放系统中,推流端210为具备数据传输和数据解析功能的个人计算机。rtmp流服务器220为livego服务器,其通过在windows环境下运行livego可执行文件并在服务器启动livego服务端搭建而成。拉流客户端230为搭载了浏览器的显示器,其中,在浏览器的前端web页面嵌入了liveplayer组件,采用rtmp播放协议,实现对视频流数据的拉取和播放。移动设备240为搭载了android系统的手机端,其与推流端210通过usb或wifi相连接。

参见图2所示,推流端210通过执行adbforward命令建立与移动设备240的通信,从而将相应的屏幕数据获取请求发送至移动设备240。移动设备240根据上述请求,在自身运行屏幕拷贝工具并调用mediacodec接口进行屏幕数据采集,得到h.264格式的屏幕的视频流数据,并通过adb连接将该h.264格式的屏幕的视频流数据发送给推流端210。推流端210接收该h.264格式的屏幕的视频流数据,完成移动设备240的屏幕的视频流数据的获取。

推流端210获取了h.264格式的屏幕的视频流数据之后,调用c库srs实例srs_h264_raw_publish.c,通过read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式,并通过srs_h264_write_raw_frames函数将转换后的视频流数据推流至rtmp流服务器220。进而,rtmp流服务器(livego服务器)220接收推流端210推流的视频流数据。

拉流客户端230根据用户的操作向rtmp流服务器(livego服务器)220发送对视频流数据的播放请求。rtmp流服务器(livego服务器)220监听到rtmp协议的播放请求后,响应该播放请求。进而,拉流客户端230在接收到rtmp流服务器(livego服务器)220对播放请求的响应后,从rtmp流服务器(livego服务器)220拉取视频流数据进行播放。

本发明实施例以简单的架构实现了手机端屏幕数据在云端的实时播放,克服了现有技术中服务器性能低、显示延时高、拓展性差的问题。

图3和图4分别示出了基于minicap工具的手机屏幕的图像显示效果和根据本发明实施例的基于rtmp的屏幕数据的视频流播放系统的手机屏幕的拉流显示效果。通过比较图3和图4可见,通过本发明实施例提供的基于rtmp的屏幕数据的视频流播放系统,在低延时的前提下,可以如minicap一般提供高清晰度的屏幕显示效果。同时,拉流客户端还可以提供退出、返回等操作按键,以及清晰度的选择按键,方便用户操作,提升用户的使用体验。

基于同一发明构思,本发明实施例还提供了一种基于rtmp的屏幕数据的视频流播放方法。图5示出了根据本发明一实施例的应用于推流端的基于rtmp的屏幕数据的视频流播放方法的流程图。参见图1,该方法至少可以包括以下步骤:

步骤s502,获取移动设备的屏幕的视频流数据。

步骤s504,将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从rtmp流服务器拉取视频流数据进行播放。

本发明实施例实现了在云端实时播放移动设备的屏幕数据,适用于当通过远程真机租用平台进行移动测试时显示移动设备的屏幕信息的场景。

在实际应用场景中,上文提及的移动设备可以包括手机、平板电脑、智能手表等智能移动终端。

在一个可选实施例中,所获取的移动设备的屏幕的视频流数据的数据格式可以为h.264。由于h.264具有很高的数据压缩比率和图像质量,采用h.264标准压缩的视频数据,可以减少网络传输所需带宽。

在一个可选实施例中,步骤s502可以实施为:

通过执行adbforward命令建立与移动设备的通信,以从移动设备获取该移动设备采集的自身屏幕的视频流数据。

通过adbforward建立一个转发,可以在推流端(例如pc)接收设备端server程序发出的所有数据。

进一步地,移动设备采集的自身屏幕的视频流数据是由该移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。此处提及的屏幕拷贝工具例如可以为scrcpy工具等。

在一个可选实施例中,步骤s504可以实施为:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器。

srs定位是运营级的互联网直播服务器集群,能够以更简单的代码读取录制的h.264文件并发布到rtmp服务器,详情可参见https://github.com/ossrs/srs

进一步地,可以通过调用srs_h264_raw_publish.c中的read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式,并通过调用srs_h264_raw_publish.c中的srs_h264_write_raw_frames函数将转换后的视频流数据推流至rtmp流服务器。

相应地,图6示出了根据本发明一实施例的应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法的流程图。参见图6,该方法至少可以包括以下步骤:

步骤s602,接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据。

步骤s604,响应拉流客户端对视频流数据的播放请求,以便拉流客户端从rtmp流服务器拉取该视频流数据进行播放。

本发明实施例实现了在云端实时播放移动设备的屏幕数据,适用于当通过远程真机租用平台进行移动测试时显示移动设备的屏幕信息的场景。

在一个优选实施例中,rtmp流服务器包括livego服务器。此时,在执行步骤s602之前,该方法还可以包括启动livego服务端的步骤。

livego服务器是基于golang开发的rtmp服务器,具有支持rtmp推流和拉流;统计信息支持;支持http在线查看流状态等优点。采用livego服务器作为rtmp流服务器,可以大大提高rtmp流服务器的性能。

在投入屏幕显示应用前,首先安装livego直播服务器,例如,可以在云服务器端安装livego直播服务器,作为rtmp流服务器提供服务。

在安装livego服务器后,在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,还需在rtmp流服务器(即,livego服务器)中启动livego服务端,用于提供rtmp推流和拉流的相应服务。具体地,用于分别监听hls、rtmp和http-flv协议传输。

相应地,图7示出了根据本发明一实施例的应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法的流程图。参见图7,该方法至少可以包括以下步骤:

步骤s702,向rtmp流服务器发送对被推送至rtmp流服务器的移动设备的屏幕的视频流数据的播放请求。

步骤s704,在接收到rtmp流服务器对该播放请求的响应后,从rtmp流服务器拉取视频流数据进行播放。

本发明实施例实现了在云端实时播放移动设备的屏幕数据,适用于当通过远程真机租用平台进行移动测试时显示移动设备的屏幕信息的场景。

在一个可选实施例中,当rtmp流服务器为livego服务器时,基于livego服务器可以支持多种常用的传输协议的特性,从rtmp流服务器拉取视频流数据进行播放的协议可以包括以下任意之一:rtmp、http-flv、hls。rtmp、http-flv、hls三种播放协议各自的播放地址如下:

·rtmp:rtmp://localhost:1935/live/movie

·flv:http://127.0.0.1:7001/live/movie.flv

·hls:http://127.0.0.1:7002/live/movie.m3u8

在一个可选实施例中,拉流客户端可以包括vlc媒体播放器和/或liveplayer组件。

vlc媒体播放器可以支持播放某些没有下载完成的视频文件部份内容,非常适合于视频流播放的场合。liveplayer组件为前端liverplayer组件,其可以嵌入例如浏览器前端web页面、微信小程序等客户端,实现对视频流数据的拉取和播放。

下面将通过具体实施例来详细介绍本发明的基于rtmp的屏幕数据的视频流播放方法的实现过程。图8示出了根据本发明一具体实施例的结合推流端、rtmp流服务器和拉流客户端的基于rtmp的屏幕数据的视频流播放方法的流程示意图。在本实施例中,推流端为pc。采用livego服务器作为rtmp流服务器,通过在rtmp流服务器投入服务之前,先安装livego直播服务器作为rtmp流服务器,并启动livego服务端来实现。拉流客户端采用搭载了vlc媒体播放器的显示器。

该方法至少可以包括以下步骤s802至步骤s812。

步骤s802,推流端通过执行adbforward命令建立与移动设备的通信,从移动设备获取该移动设备采集的自身屏幕的h.264格式的视频流数据。

在本实施例中,移动设备具体为搭载了android系统的手机。该手机通过在自身运行屏幕拷贝工具并调用mediacodec接口采集自身屏幕的h.264格式的视频流数据。

步骤s804,推流端调用srs_h264_raw_publish.c中的read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式,并进一步调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至rtmp流服务器。

步骤s806,rtmp流服务器接收推流端推流的视频流数据。

步骤s808,拉流客户端向rtmp流服务器发送对该视频流数据的播放请求。

步骤s810,rtmp流服务器接收到该播放请求后,向拉流客户端发送对该播放请求的响应信号。

步骤s812,拉流客户端接收到该响应信号后,从rtmp流服务器拉取视频流数据,通过vlc媒体播放器进行播放。

本发明实施例提供的基于rtmp的屏幕数据的视频流播放方法,实现了在云端实时播放移动设备的屏幕数据,具有低延迟、可长时间播放的优势。

基于同一发明构思,本发明实施例还提供了一种推流端,用于支持上述任意一个实施例或其组合所提供的基于rtmp的屏幕数据的视频流播放方法。图9示出了根据本发明一实施例的推流端910的结构示意图。参见图9,该推流端910至少可以包括:数据获取模块911和转换推流模块912。

现介绍本发明实施例的推流端910的各组成或器件的功能以及各部分间的连接关系:

数据获取模块911,适于获取移动设备的屏幕的视频流数据。

转换推流模块912,与数据获取模块911连接,适于将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从rtmp流服务器拉取视频流数据进行播放。

在一个可选实施例中,该推流端910可以应用于当通过远程真机租用平台进行移动测试时显示移动设备的屏幕信息的场景。

在一个可选实施例中,数据获取模块911所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

在一个可选实施例中,数据获取模块911还适于:

通过执行adbforward命令建立与移动设备的通信,以从移动设备获取该移动设备采集的自身屏幕的视频流数据。

进一步地,该移动设备采集的自身屏幕的视频流数据是由该移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

在一个可选实施例中,转换推流模块912还适于:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器。

进一步地,转换推流模块912还适于:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至rtmp流服务器。

相应地,本发明实施例还提供了一种rtmp流服务器。图10示出了根据本发明一实施例的rtmp流服务器920的结构示意图。参见图10,该rtmp流服务器920至少可以包括:推流接收模块921和拉流响应模块922。

现介绍本发明实施例的rtmp流服务器920的各组成或器件的功能以及各部分间的连接关系:

推流接收模块921,适于接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据。

拉流响应模块922,适于响应拉流客户端对视频流数据的播放请求,以便拉流客户端从rtmp流服务器拉取视频流数据进行播放。

在一个可选实施例中,rtmp流服务器920可以应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

在一个可选实施例中,rtmp流服务器920可以为livego服务器。此时,rtmp流服务器920还可以包括:

服务端启动模块,适于在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,启动livego服务端。

相应地,本发明实施例还提供了一种拉流客户端。图11示出了根据本发明一实施例的拉流客户端930的结构示意图。参见图11,该拉流客户端930至少可以包括:请求发送模块931和拉流播放模块932。

现介绍本发明实施例的拉流客户端930的各组成或器件的功能以及各部分间的连接关系:

请求发送模块931,适于向rtmp流服务器发送对被推送至rtmp流服务器的移动设备的屏幕的视频流数据的播放请求。

拉流播放模块932,适于在接收到rtmp流服务器对该播放请求的响应后,从rtmp流服务器拉取视频流数据进行播放。

在一个可选实施例中,该拉流客户端930可以应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

在一个可选实施例中,当rtmp流服务器为livego服务器时,拉流客户端930的播放协议包括以下任意之一:

rtmp、http-flv、hls。

在一个可选实施例中,拉流播放模块932可以包括vlc媒体播放器和/或liveplayer组件。

基于同一发明构思,本发明实施例还提供了一种计算机存储介质。该计算机存储介质存储有计算机程序代码,当该计算机程序代码在计算设备上运行时,导致计算设备执行根据上述任意一个实施例或其组合所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或者应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

基于同一发明构思,本发明实施例还提供了一种计算设备。该计算设备可以包括:

处理器;以及

存储有计算机程序代码的存储器;

当该计算机程序代码被处理器运行时,导致该计算设备执行根据上述任意一个实施例或其组合所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或者应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:

本发明实施例提出的基于rtmp的屏幕数据的视频流播放方案,其架构主要包括推流端、rtmp流服务器和拉流客户端,其中,通过推流端获取移动设备的屏幕的视频流数据,转换成rtmp格式后推流至rtmp流服务器,rtmp流服务器接收rtmp推流的视频流数据并响应拉流客户端的播放请求,拉流客户端在接收到rtmp流服务器对播放请求的响应后,从rtmp流服务器拉取视频流数据进行播放,实现了在云端实时播放移动设备的屏幕数据,适用于当通过远程真机租用平台进行移动测试时显示手机端的屏幕信息的场景。本发明实施例的方案采用rtmp协议进行视频流数据的推流和拉流播放,由于rtmp流的延迟较低,且能长时间不断流播放,本发明实施例的方案特别适合于长时间播放的场合。同时,本发明实施例提供的视频流播放系统的整体架构清晰,架构各组成部分之间具有较低耦合性,rtmp推流端、流服务器、拉流端可任意迁移而不影响系统的整体性能,增强了系统的易拓展性。

进一步地,rtmp流服务器采用livego服务器。livego服务器基于golang开发,支持海量轻量级协程,具有支持rtmp推流和拉流、统计信息、http在线查看流状态等优点。通过采用livego服务器来实现rtmp推流和拉流以完成视频流的播放显示,提高了rtmp流服务器处理多进程并发的性能,同时为用户在进行拉流播放时提供更好的显示效果和更佳的操作体验。

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

另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。

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

或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。

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

根据本发明实施例的一方面,提供了a1.一种基于实时消息传输协议rtmp的屏幕数据的视频流播放系统,包括:

推流端,用于获取移动设备的屏幕的视频流数据,将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器;

所述rtmp流服务器,用于接收所述推流端推流的视频流数据,并响应拉流客户端对所述视频流数据的播放请求;以及

所述拉流客户端,用于向所述rtmp流服务器发送对所述视频流数据的播放请求,并在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

a2.根据a1所述的视频流播放系统,其中,所述系统应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

a3.根据a1所述的视频流播放系统,其中,所述rtmp流服务器包括livego服务器;

所述rtmp流服务器还用于:

在接收所述推流端推流的视频流数据之前,启动livego服务端。

a4.根据a3所述的视频流播放系统,其中,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

a5.根据a4所述的视频流播放系统,其中,所述推流端还用于:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

a6.根据a5所述的视频流播放系统,其中,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

a7.根据a4所述的视频流播放系统,其中,所述推流端还用于:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

a8.根据a7所述的视频流播放系统,其中,所述推流端还用于:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

a9.根据a3所述的视频流播放系统,其中,所述拉流客户端的播放协议包括以下任意之一:

rtmp、http-flv、hls。

a10.根据a3所述的视频流播放系统,其中,所述拉流客户端包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的另一方面,还提供了b11.一种基于rtmp的屏幕数据的视频流播放方法,应用于推流端,包括:

获取移动设备的屏幕的视频流数据;

将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

b12.根据b11所述的方法,其中,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

b13.根据b11所述的方法,其中,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

b14.根据b13所述的方法,其中,获取移动设备的屏幕的视频流数据,包括:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

b15.根据b14所述的方法,其中,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

b16.根据b13所述的方法,其中,通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

b17.根据b16所述的方法,其中,通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器,进一步包括:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

根据本发明实施例的另一方面,还提供了c18.一种基于rtmp的屏幕数据的视频流播放方法,应用于rtmp流服务器,包括:

接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据;

响应拉流客户端对所述视频流数据的播放请求,以便所述拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

c19.根据c18所述的方法,其中,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

c20.根据c18所述的方法,其中,所述rtmp流服务器包括livego服务器;

在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,所述方法还包括:

启动livego服务端。

根据本发明实施例的另一方面,还提供了d21.一种基于rtmp的屏幕数据的视频流播放方法,应用于拉流客户端,包括:

向rtmp流服务器发送对被推送至所述rtmp流服务器的移动设备的屏幕的视频流数据的播放请求;

在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

d22.根据d21所述的方法,其中,所述方法应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

d23.根据d21所述的方法,其中,当所述rtmp流服务器为livego服务器时,从所述rtmp流服务器拉取所述视频流数据进行播放的协议包括以下任意之一:

rtmp、http-flv、hls。

d24.根据d21所述的方法,其中,所述拉流客户端包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的另一方面,还提供了e25.一种推流端,包括:

数据获取模块,适于获取移动设备的屏幕的视频流数据;以及

转换推流模块,适于将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至rtmp流服务器,以便拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

e26.根据e25所述的推流端,其中,所述推流端应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

e27.根据e25所述的推流端,其中,所获取的移动设备的屏幕的视频流数据的数据格式为h.264。

e28.根据e27所述的推流端,其中,所述数据获取模块还适于:

通过执行adbforward命令建立与所述移动设备的通信,以从所述移动设备获取所述移动设备采集的自身屏幕的视频流数据。

e29.根据e28所述的推流端,其中,所述移动设备采集的自身屏幕的视频流数据是由所述移动设备通过在自身运行屏幕拷贝工具并调用mediacodec接口采集得到。

e30.根据e27所述的推流端,其中,所述转换推流模块还适于:

通过调用c库srs实例srs_h264_raw_publish.c将所获取的视频流数据转换成rtmp格式,并将转换后的视频流数据推流至所述rtmp流服务器。

e31.根据e30所述的推流端,其中,所述转换推流模块还适于:

通过调用read_h264_frame函数将所获取的h.264格式的视频流数据转换成rtmp格式;

通过调用srs_h264_write_raw_frames函数将转换后的视频流数据推流至所述rtmp流服务器。

根据本发明实施例的另一方面,还提供了f32.一种rtmp流服务器,包括:

推流接收模块,适于接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据;以及

拉流响应模块,适于响应拉流客户端对所述视频流数据的播放请求,以便所述拉流客户端从所述rtmp流服务器拉取所述视频流数据进行播放。

f33.根据f32所述的rtmp流服务器,其中,所述rtmp流服务器应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

f34.根据f32所述的rtmp流服务器,其中,所述rtmp流服务器为livego服务器;

所述rtmp流服务器还包括:

服务端启动模块,适于在接收推流端推流至的、转换为rtmp格式的移动设备的屏幕的视频流数据之前,启动livego服务端。

根据本发明实施例的另一方面,还提供了g35.一种拉流客户端,包括:

请求发送模块,适于向rtmp流服务器发送对被推送至所述rtmp流服务器的移动设备的屏幕的视频流数据的播放请求;以及

拉流播放模块,适于在接收到所述rtmp流服务器对所述播放请求的响应后,从所述rtmp流服务器拉取所述视频流数据进行播放。

g36.根据g35所述的拉流客户端,其中,所述拉流客户端应用于当通过远程真机租用平台进行移动测试时显示所述移动设备的屏幕信息的场景。

g37.根据g35所述的拉流客户端,其中,当所述rtmp流服务器为livego服务器时,所述拉流客户端的播放协议包括以下任意之一:

rtmp、http-flv、hls。

g38.根据g35所述的拉流客户端,其中,所述拉流播放模块包括vlc媒体播放器和/或liveplayer组件。

根据本发明实施例的再一方面,还提供了h39.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据b11-b17中任一项所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、根据c18-c20中任一项所述的应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或根据d21-d24中任一项所述的应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

根据本发明实施例的又一方面,还提供了i40.一种计算设备,包括:

处理器;以及

存储有计算机程序代码的存储器;

当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据b11-b17中任一项所述的应用于推流端的基于rtmp的屏幕数据的视频流播放方法、根据c18-c20中任一项所述的应用于rtmp流服务器的基于rtmp的屏幕数据的视频流播放方法或根据d21-d24中任一项所述的应用于拉流客户端的基于rtmp的屏幕数据的视频流播放方法。

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