一种基于屏幕镜像及rtsp流媒体框架的屏幕共享方法

文档序号:9846735阅读:973来源:国知局
一种基于屏幕镜像及rtsp流媒体框架的屏幕共享方法
【技术领域】
[0001 ]本发明涉及一种使用Media Pro ject1n进行屏幕数据获取及RTSP流媒体框架进行视频流发布,应用于Android平台与各平台之间的屏幕共享的方法。
【背景技术】
[0002]随着科技发展,智能设备逐渐走进人们生活,Android平台的屏幕共享技术逐渐成为一种新的需求趋势。
[0003]传统的屏幕共享技术主要分为两种方式:其一,将获取到的屏幕数据封装成图片格式,通过向客户端发送多张图片,使用图片组成视频进行播放。这种方式不仅占用大量带宽,导致视频帧数低,延迟高,而且效率低,可扩展性差,改变视频质量需要对每张图片进行再处理。其二,将获取到的屏幕信息封装成流数据,在服务端就编码成H.264之类的压缩之后的流数据,使用流媒体传输视频流数据,客户端接收到视频流信息后,只需要简单处理即可进行播放,且对于客户端平台要求低,Android平台、PC平台均可以实现播放,降低了带宽占用率,提高了视频质量。
[0004]传统的屏幕信息获取方法由于系统层级的限制,只能使用通过JNI调用帧缓冲器的方式来获取屏幕数据,是造成屏幕共享质量差的主要原因。得益于Android5.0在屏幕显示方式上的改变,同时Android系统新特性的支持,使得开发者可以以较低的代价获取到屏幕数据,极大降低了屏幕共享成本,使得流畅高质量的屏幕共享成为可能。
[0005]在流媒体框架上,传统的方式有两种:其一,将视频流信息推送到darwin流媒体服务器上,以其为载体进行视频流的发布,该方式极大的增加了开发成本和屏幕共享功能的使用成本;其二,移植其他开源的流媒体框架项目,主流是将跨平台流媒体框架live555移植到Android平台,使用JNI进行调用,将导致丧失JAVA代码原有的跨平台性与类型安全等特性。
[0006]在传输方式上,常规的是单播协议,该协议主要用于点对单点传输,而当面对点到多点传输时,由于没有相应的优化,必须向每个接收者都发送一份数据副本,由此产生的大量数据副本将导致传输效率低下及可扩展性差。

【发明内容】

[0007]本发明针对获取屏幕信息的方式,传统的从Android帧缓冲器获取屏幕信息具有效率低下,耗费大量硬件资源且帧数不高,必须使用JNI方式调用底层硬件设备等缺点,提出了一种基于屏幕镜像及RTSP流媒体框架的屏幕共享方法,使用MediaPro jec1n与VirtualDisplay结合的方式获取屏幕信息,使得APP不仅能够高效的获取屏幕信息,而且保持着跨平台性及类型安全等特性。
[0008]本发明的目的是通过下述技术方法实现的:
一种基于屏幕镜像及RTSP流媒体框架的屏幕共享方法,包括如下步骤:
步骤一:服务端开启自定义的RTSP服务及MediaPro ject1n系统服务,开启端口进行监听,等待客户端连接。
[0009]步骤二:客户端连入后进入RTSP应答流程,包括OPT1NS、DESCRIBE、SETUP、PLAY四个阶段。
[0010]步骤三:通过镜像屏幕的方式将主屏幕信息捕获到画板对象上,获取屏幕信息。
[0011]步骤四:对屏幕信息进行编码,通过RTP打包之后,使用多播形式向客户端进行发送。
[0012]本发明步骤一中,将RTSP流媒体框架以服务的形式存在于APP中,符合Android模块化开发的规范,增强其可扩展性,有别于通过JNI调用,在上层实现的RTSP流媒体框架使APP仍然保持跨平台性及类型安全等特性。
[0013]本发明步骤二中,在RTSP应答流程中,主要是服务端向客户端提供各种视频流参数,其中包括序列参数集(SPS)、图片参数集(PPS)、媒体名、传输协议、会话标识符等,在PLAY流程中对视频流进行封装打包传输;
本发明步骤三中,通过创建虚拟屏幕的方式,将主屏幕内容镜像到画板上,不仅高效的获得屏幕信息,而且画板上的内容极大的方便了后续编码处理;
本发明步骤四中,使用音视频录制类(MediaRecorder)进行编码,对其进行以下参数设置,包括视频源、视频流输出格式、视频编码格式、视频流分辨率、视频流帧数、视频编码比特率等参数;
本发明步骤四中,RTP数据包的头部信息包括CC (CSRC标识,表示来源)、PT (标明RTP负载格式:编码算法、采样频率、承载通道)、序列号(用于为接收方提供探测数据丢失的方法)、时间戳(记载负载中第一个字节的采样时间)、同步源标识(SSRC,标识产生媒体流的信源)、提供源标识(CSRC)。
[0014]本发明与现有技术相比具有如下优点:
(I)区别于传统屏幕信息获取方案,本发明采用Android5.0的新特性MediaPro ject1n对屏幕信息进行获取,得益于Android系统显示架构的改变,开发者可以更加高效的获取屏幕信息,再通过VirtualDisplay的镜像模式创建一个虚拟SURFACE,方便MediaRecorder获取视频源。
[0015](2)本发明采用自定义的Android上层的RTSP流媒体框架进行视频流的发布,优点在于不需要额外硬件设备,也不需要使用JNI调用,在JAVA层完成RTSP流媒体框架,方便调试,易于扩展,且保持了跨平台性及安全类型等特性。
[0016](3)本发明多播形式进行一点对多点的连接与发送,区别于传统单播形式,信息在每条网络链路上只需传递一次,具有效率高、可扩展性强等优点。
[0017](4)本发明将RTSP流媒体框架在Android平台JA VA层进行实现,弥补了传统流媒体框架的缺陷,极大的方便了后续流媒体框架在Android平台的应用。
[0018](5)本发明面对的Android系统,在屏幕共享中具备了点对多点的条件,为防止因多客户端出现而使得该功能可用性降低的情况出现,在屏幕共享功能中加入了多播协议,对多客户端情况进行优化,使得信息能够高效传输。
[0019](6)本发明针对RTSP流媒体框架,在Android上层实现RTSP流媒体框架,方便对协议进行修改,增强流媒体框架的可扩展性,降低开发难度,还保留了 JAVA跨平台及安全类型等特性。
[0020](7)本发明针对视频流发送,传统的单播将导致服务端效率低下且缺乏可扩展性,提出了使用多播的形式进行一点到多点的连接与发送,极大的提高了发送效率。。
【附图说明】
[0021]图1为屏幕共享流程图;
图2为单播协议说明图;
图3为多播协议说明图。
【具体实施方式】
[0022]下面结合附图对本发明的技术方案作进一步的说明,但并不局限于此,凡是对本发明技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的保护范围中。
[0023]本发明提供了一种基于屏幕镜像及RTSP流媒体框架的屏幕共享方法,流程图如图1所示,其中:实施环境包括服务端120和客户端130,服务端120是具有屏幕显示功能的搭载Android5.0系统或以上的智能设备,且具有WIFI模块(WIreless-FIdelity),能够连接WIFI并收发信息。客户端130是具有屏幕显示功能的能够播放RTSP视频流的搭载Android、10S、Windows等平台的智能设备,具有WIFI模块或网卡,能够连接网络收发信息。具体实施步骤如下:
步骤101:服务端120启动具有屏幕共享功能的App,开启RTSP服务对端口进行监听,并开启Media Pro ject1n系统服务用于后续屏幕共享功能。
[0024]步骤1 2:客户端13 O开启能够播放RT SP视频流的播放器,如Andr ο i d平台的VideoView或PC平台的VLC播放器,设置Uri地址,Uri地址由服务端IP地址及RTSP监听端口号组成。
[0025]步骤103:客户端130向服务端120发送OPT1NS请求,以得到服务端120提供的方法,方便后续问答。
[0026]步骤104:服务端120接收到了客户端13
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1