即时传送屏幕图像的方法及系统与流程

文档序号:16435330发布日期:2018-12-28 20:27阅读:1565来源:国知局
即时传送屏幕图像的方法及系统与流程

本发明涉及图像处理领域,特别涉及即时传送屏幕图像的方法及系统。

背景技术

即时传送当前设备的屏幕图像的功能是消费类电子设备比较重要的功能,比如智能电视、智能手机、机顶盒设备等等,其核心功能就是把当前正在显示的屏幕图像传输给远程设备进行显示,也就是屏幕共享。屏幕共享的使用场景很多,广泛使用于视频会议,远程协助,在线服务等场景中。要进行屏幕共享,首先得获取共享设备的屏幕,然后进行编码,再音视频合成为需要传输的码流格式,最后选择合适的传输方式通过网络发送到各媒体终端,媒体终端负责从网络上下载获取到媒体流数据,并进行解码播放,并呈现在屏幕设备上。

由于主流的安卓电视系统一般只提供截取屏幕的一幅图像的接口,而且获取图像耗时和效率不高,而且不同平台的效果差别很大,导致了如果基于系统的截屏接口实现的传屏效果很差,具体表现在帧率很低,图像卡顿,碎片化严重,经常出现花屏和图像不连贯现象,这种非流畅的传屏方式,严重影响了用户观影过程的整体化的观影体验。



技术实现要素:

本发明要解决的技术问题是:提供一种即时传送屏幕图像的方法及系统,解决单纯传递截屏图片所出现的帧率低、图像卡顿、碎片化问题。

为解决上述问题,本发明采用的技术方案是:

即时传送屏幕图像的方法,其特征在于,包括以下步骤:

步骤1:获取屏幕的参数以及当前显示的帧数据,并将获取的帧数据保存在内存中;

步骤2:根据屏幕的参数对内存中相邻的帧数据进行图像编码;

步骤3:对编码后的数据进行流媒体格式的统一合成处理,生成相应的流媒体数据;

步骤4:将步骤3生成的流媒体数据进行分片封包处理,生成需要发送的网络包,然后发送到直播流地址上;

步骤5:终端流媒体播放器从直播流地址下载直播流媒体数据,并对流媒体数据进行解码播放与呈现。

进一步的,所述屏幕为智能电视、智能手机或智能机顶盒的屏幕。

进一步的,屏幕的参数包括分辨率和数据格式。

进一步的,步骤2采用的编码格式为h264格式。

进一步的,步骤3所生成的流媒体数据为flv数据。

进一步的,步骤4和5中,流媒体数据按照rtmp协议进行传输。

对应于上述方法,本发明所提供的即时传送屏幕图像的系统,包括屏幕数据获取模块、视频数据编码模块、码流合成模块和网络发送模块;

屏幕数据获取模块用于获取屏幕的参数以及当前显示的帧数据,并将获取的帧数据保存在内存中;

视频数据编码模块用于根据屏幕的参数对内存中相邻的帧数据进行图像编码;

码流合成模块按照设置的传输流格式,对编码后的数据进行合成,生成适合网络传输的流媒体数据;

网络发送模块按照需要传输的直播流地址和传输协议,将合成后的流媒体数据封成网络包,并发送到直播流地址以供终端流媒体播放器下载和播放。

进一步的,所述包括屏显数据拷贝和屏幕信息获取模块;

屏显数据拷贝模块负责把当前即将显示在屏幕的framebuffer拷贝出来,以供数据编码使用;屏幕信息获取模块负责获取当前屏幕的参数。

本发明的有益效果是:本发明通过流媒体合成和网络发送,规避了每次传递图片带来的卡顿和碎片化观看体验,实现了把屏幕作为媒体源的连续播放,带给用户完整、流畅、统一化的观看体验,形成整体化流畅的播放效果,进而可以实现远距离电子设备的无缝连接。

附图说明

图1为实施例即时传送屏幕图像的流程图。

具体实施方式

由于在远程服务或者电视同屏的场景中,需要远程即时查看电视当前的屏幕显示,但是电视开发系统一般都只会提供截取当前屏幕的接口用于保存当前电视屏幕到一幅图片中。如果在电视正在播放视频或者进行操作的时候,想要在pc或者手机等其他设备远程流畅的观看当前电视屏幕,仅仅靠截取当前屏幕的图片是完全不够满足要求的。为了实现上述这种即时流畅的观看要求,本发明提出了一种即时传送屏幕图像的方法及系统,通过本发明的方法,可以实现远程流畅的观看电视屏幕图像,从而克服了单纯传递截屏图片的碎片化的观看体验,形成整体化流畅的播放效果,进而实现远距离电子设备的无缝连接。

本发明所提供的即时传送屏幕图像的系统,包括屏幕数据获取模块、视频数据编码模块、码流合成模块和网络发送模块;其中,

屏幕数据获取模块所述屏幕数据获取模块包括屏显数据拷贝和屏幕信息获取模块;

屏显数据拷贝模块负责把当前即将显示在屏幕的framebuffer拷贝出来,以供数据编码使用;屏幕信息获取模块负责获取当前屏幕的分辨率、数据格式等参数;

视频数据编码模块用于根据屏幕的参数对内存中相邻的帧数据进行图像编码;

码流合成模块按照设置的传输流格式,对编码后的数据进行合成,生成适合网络传输的流媒体数据;

网络发送模块按照需要传输的直播流地址和传输协议,将合成后的流媒体数据封成网络包,并发送到直播流地址以供终端流媒体播放器下载和播放。

基于上述系统,本发明提供了一种即时传送屏幕图像的方法,包括以下步骤:

步骤1:参数初始化,包括源数据地址,源数据格式,视频编码格式,音频编码格式,采样率,分辨率,合成的文件格式,数据输出地址,数据输出网络协议等参数;

步骤2:屏幕数据获取模块获取智能电视、智能手机或智能机顶盒屏幕的参数以及当前显示的帧数据,并将获取的帧数据保存在内存中;

步骤3:视频数据编码模块根据屏幕的参数对内存中相邻的帧数据进行图像编码;

步骤4:码流合成模块对编码后的数据进行流媒体格式的统一合成处理,生成相应的流媒体数据;

步骤5:网络发送模块将步骤4生成的流媒体数据进行分片封包处理,生成需要发送的网络包,然后发送到直播流地址上;

步骤6:终端流媒体播放器从直播流地址下载直播流媒体数据,并对流媒体数据进行解码播放与呈现。

单纯传递截屏图片的传统方法是通过系统接口,获取当前屏幕的一帧数据之后进行帧内压缩,生成jpg或者其他类型压缩图片格式,然后一张张传递到目的地址进行逐张显示。对比本发明的方法,传统方法有几个的缺陷:a.此方法采用的是帧内压缩,压缩效率远低于步骤4中采用的帧内和帧间压缩方法,编码生成的图像质量要差很多。b.因为是抓屏压缩编码后以单张图片为单位发送和显示,而不是基于流媒体的处理方式,导致编码帧率,传输码率和显示帧率要远低于本发明的方式,甚至会漏掉一些屏幕场景,导致观众看起来会有卡顿和不连续感觉,产生碎片化的观看体验。

下面通过实施例对本发明进行进一步说明。

实施例提供一种即时传送电视屏幕图像的系统及方法,通过设定流媒体处理中间件运行在智能电视终端上,以实现即时传送电视屏幕图像。其中,流媒体处理中间件包括:屏幕数据获取模块、视频数据编码模块、码流合成模块和网络发送模块;

所述屏幕数据获取模块包括屏显数据拷贝和屏幕信息获取模块;

屏显数据拷贝模块负责把当前即将显示在屏幕的framebuffer拷贝出来,以供数据编码使用;屏幕信息获取模块负责获取当前屏幕的分辨率、数据格式等参数;

视频数据编码模块用于根据屏幕的参数对内存中相邻的帧数据进行图像编码;

码流合成模块按照设置的传输流格式,对编码后的数据进行合成,生成适合网络传输的流媒体数据;

网络发送模块按照需要传输的直播流地址和传输协议,将合成后的流媒体数据封成网络包,并发送到直播流地址以供终端流媒体播放器下载和播放。

利用上述系统,实施例传送电视屏幕图像的流程如图1所示,包括:

步骤1:参数初始化,在参数配置列表中初始化设置分辨率为“640*480”,编码格式为“h264”,编码参数“mainprofile”,码率为“440k”,帧率为“15”,设置流媒体处理中间件合成目标流媒体格式为flv格式,设置流媒体处理中间件流化模块流媒体协议为直播rtmp协议,比如设置流媒体推送地址为“rtmp://10.9.44.116:1935/live/test”;

步骤2:获取电视屏幕当前显示的帧数据,通过创建一个数据获取线程,线程不断通过截屏程序获取屏幕的数据,然后把获取到的数据传递给编码模块;

步骤3:获取当前电视屏幕的分辨率,保存在数据结构中,这些参数的获得是通过屏幕显示管理程序获得的;

步骤4:根据屏幕的参数对内存中相邻的帧数据进行图像编码,按照步骤1的参数配置的编码相关参数,设定width,height,mime,color-format,bitrate,frame-rate,i-frame-interval等参数值,然后创建一个编码线程,通过编码程序来进行编码;

步骤5:流媒体格式合成,码流合成模块按照步骤1的参数,将编码后的h264的媒体数据进行封装,并生成flv数据;

步骤6:网络发送,网络发送模块按照rtmp直播流协议的规范,对步骤5中的flv数据进行分片封包处理,并通过网络发送到直播流地址“rtmp://10.9.44.116:1935/live/test”;

步骤7:rtmp直播流播放,目的端媒体播放器获取到步骤1初始化的直播流地址,即“rtmp://10.9.44.116:1935/live/test”,并按照rtmp流协议方式解析flv,在目的端上进行解码播放与显示。

通过以上步骤的处理,实施例实现了远程流畅的观看电视屏幕图像,从而克服了单纯传递截屏图片的碎片化的观看体验,形成整体化流畅的播放效果,进而可以实现远距离电子设备的无缝连接。

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