APP下载

一种基于嵌入式平台屏幕内容分享系统的设计与实现

2014-11-09邓春健宋喜佳

液晶与显示 2014年6期
关键词:码率服务器端线程

杨 亮,邓春健,宋喜佳

(1.电子科技大学中山学院 计算机学院,广东 中山 528402;2.广东工业大学 自动化学院,广东 广州 510006)

1 引 言

在近年来随着科技的快速发展以及智能设备的普及,人们工作生活中的多媒体设备已经从传统的以个人电脑和电视机为主,转变成桌面电脑、智能手机、平板电脑和电视机共同存在[1]。屏与屏之间的内容共享不再仅仅局限于计算机与计算机之间,更多会发生在诸如计算机与智能电视、智能电视与手持式设备等多种智能设备之间,然而现有一些成熟的屏幕内容共享系统,例如X系统[2](the X system)、微软的远程桌面协议(Microsoft Remote Desktop Protocol,RDP)、虚拟网络计算[3](Virtual Network Computing),主要针对计算机与计算机之间的屏幕共享,另一方面,传统屏幕内容分享系统主要用于文字、图片等内容的共享,目前所采用的压缩编码方式对带宽要求过大,并不适合视频内容的共享,而 H.264[4]具有更好的压缩性能以及面象网络传输的“友好性”[5],是目前应用最广泛的视频编码标准之一[6]。

针对以上问题,本文介绍了一种基于嵌入式平台大屏幕分享系统的设计方法与具体实现,该系统基于场景识别的码率自适应调整算法,能够根据网络拥塞状况及当前屏幕的应用场景对H.264码率进行自适应调整,以达到节约带宽、提高画质的目的,另一方面,为节约成本并使系统更加小巧与便携,服务器端基于嵌入式ARM平台。

2 系统组成和工作原理

本系统由客户端与服务器端两部分构成,客户端运行于需要进行屏幕内容分享的机器上,一般是笔记本电脑、平板等个人计算机,主要完成屏幕内容的获取、压缩编码及传输等工作;服务器端运行于嵌入式平台,采用的就是一款带图形加速功能的嵌入式多媒体应用处理器BCM2835作为服务器端的主控芯片,上面搭载嵌入式Linux操作系统,主要完成内容的接收、解码、显示等功能。

传统应用较广泛的vnc软件采用的是RFB协议实现屏幕内容的共享功能,具有良好的跨平台性,但当屏幕内容变化大时,例如在播放视频时,所占有带宽将成倍增长。其他较流行的屏幕共享软件,如RDP、X windows,采用平台相关的渲染命令来描述屏幕内容的变化,平台依赖性较强,且压缩编码的效率不高,因此并不适合视频等内容的共享。针对以上问题,本系统采用h.264作为对内容压缩的编码格式,并通过RTP协议传输,以节约带宽提升画质。

3 系统总体设计与实现

3.1 客户端软件的设计与实现

3.1.1 基于QT的跨平台软件设计

Qt是一个跨平台的C++图形用户界面应用程序框架[7],能够支持 Android、iOS、Linux、windows等操作系统,本系统选取QT为开发平台,其软件架构图如图1所示。

图1 客户端软件架构图Fig.1 Client software architecture

整个应用程序分6个模块,其中用户界面模块主要完成软件的配置,包括屏幕分享开始/停止等功能键。屏幕内容获取模块主要完成屏幕的定时截图功能;屏幕内容压缩模块主要是采用开源x264合适的编码算法对屏幕内容进行编码;屏幕内容发送模块负责对编码后的数据进行RTP打包,并通过网络接口发送出去;屏幕应用场景智能识别模块负责确定当前屏幕共享的内容是以文字为主还是以视频播放为主,为选择正确的编码码率提供参考;网络拥塞状况侦测模块负责提供一种网络机制探测网络是否拥塞。

3.1.2 基于场景识别的码率自适应调整算法

采用H.264协议作为编码方式具有占用带宽小、压缩效率高的特点,能够有效解决共享在线视频占用带宽过大的问题;另一方面,码率在一定程度上影响着画面是否清晰,适当调整码率可以优化画质,但当屏幕内容分享主要为文字、网页、静态图片时,H.264协议不能智能识别内容并通过提高码率以提高们图像质量,也不能自动侦测网络是否拥塞。

针对以上问题,本文提出了一种基于场景识别的码率自适应调整算法,该算法能够自动识别当前屏幕应用场景,并根据网络拥塞状况及当前屏幕的应用场景对H.264码率进行自适应调整,以达到节约带宽、提高画质的目的。算法主体思想如下:定时捕获屏幕内容,采用H.264协议对屏幕内容进行编码,根据屏幕内容智能识别当前应用场景并自动探测网络拥塞程度自适应调节H.264的码率,以达到最大化的利用带宽及提高清晰度的目的,其算法示意图如图2所示。

图2 码率自适应调整算法原理图Fig.2 Block diagram of code rate self-adaption adjustment

其主要算法流程如下:

(1)制定精简协议,协商服务器端与客户端可支持的码率。

(2)通过定期发送网络侦测包,自动检测网络拥塞情况。

(3)遍历当前所有在屏幕上显示的窗口信息,智能识别当前屏幕的应用场景,主要分为文字应用场景与视频应用场景两种。

(4)针对文字应用场景与视频应用场景,分别制定不同级别的码率,以实现精细化码率控制。

根据场景决定当前H.264编码的码率,当检测到网络拥塞时,自适应调整当前码率。

为动态检测网络拥塞状况,客户端定时发送网络拥塞请求消息,携带时间戳等信息,服务器端收到后,将比较当前时间,并将当前时间戳及网络延迟等信息通过网络拥塞检测应答包发送给客户端,通过延时情况,动态评评网络拥塞状态。为智能检测当前屏幕的应用场景,本文通过获取当前屏幕所有窗口的句柄,并获取其相应的进程信息,根据当前屏幕的窗口大小、进程号等信息判断当前屏幕的的应用是以文字为主还是以视频为主,并对不同应用场景进行确定码率范围,有助于快速确定适合传输的码率。

为使码率调整算法能够较好的跟踪网络拥塞情况的变化,达到充分利用带宽提高画质的目的,本文采用增量式数字PD控制器来在线调整码率。假设τ(i)为i时刻的码率,θref(i)为我们期望网络拥塞状况,通常使用icmp包的返回值来描述,θr(i)为实际的网络拥塞状况。因此,在第i个采样时刻,网络拥塞状况误差为:

其中:kp与kd分别为码率PD控制器的比例和微分系数。先通过经验给出该系数的估计值,再通过实验对该值进行调整,以期达到较好的跟踪效果。

这种根据网络拥塞情况、当前屏幕应用状况动态调整H.264码率的方法能够大大加大带宽的利用屏及屏幕内容分享的分辨率与质量。

3.2 服务器端系统设计与实现

服务器端主要完成屏幕内容接收、解码、显示等功能,考虑到编码速度是目前视频压缩应用的瓶颈[8],硬件方面采用BCM2835为处理器,移植嵌入式Linux操作系统,并提供了HDMI/VGA/DVI多种显示接口,兼容多种外接显示设备。为减小模块之间的耦合,提高系统的并发处理能力,本文设计了4个线程,分别是主线程、数据接收线程、数据解码线程、显示线程,其软件流程图如图3所示。

图3 服务器端软件流程图Fig.3 Server software flow chart

服务器端从网络上会收到2种类型的数据包,一种是H.264编码后的视频数据,另一种是控制信息,包括网络拥塞检测请求、编解码能力协商请求等类型的消息。为提高程序的并发能力,分别设计了视频数据队列、控制信息队列、数据发送队列,这样做的好处是,线程之间松耦合,可以并发处理。

主线程负责启动3个子线程,并监控子线程状态、处理外部事件,包括读取控制信息队列里面的数据包,对其进行处理,并将要发送的数据放入数据发送队列。

数据接收线程负责网络数据的收发,在从网络上接收数据后,首先根据消息头信息判断是控制信息还是H.264编码格式的数据包,并分别放入屏幕内容数据队列及控制信息队列。数据解码线程负责从视频数据队列中读取数据,并对数据包进行H.264的解码,解码器则选取了 FFmpeg[9-11]开源项目作为底层实现,解码后的数据放入视频数据队列,由视频显示线程负责读取及显示。

4 系统测试结果

本文所设计的系统与著名屏幕共享软件(VNC、RDP)进行对比测试。具体测试环境如下:传统屏幕共享软件测试平台为两台笔记本通过WiFi组成局域网,均采用windows平台、1280×800的屏幕分辨率;本文设计的屏幕内容共享系统采用的测试环境则是笔记本与嵌入式平台组成通过 WiFi组成的无线局域网,同样采用1280×800的屏幕分辨率。

为有效评估在各个应用场景下各软件带宽占用率的不同,测试内容分为文字为主和以视频播放为主的屏幕内容共享,为保证测试结果的可比性,测试时采用同一个路由器,具体测试用例描述如下:

(1)以文字为主的应用场景测试

选择以文字描述为主的ppt文档一份,共计60页,设置每4s变换一页的速度进行全屏播放。

(2)以图片为主的应用场景测试

选取以图片为主的ppt文档一份,共计60页,设置每4s变换一页的速度进行全屏播放。

(3)以视频播放为主的应用场景测试

选择avi格式的视频进行播放,播放码率为610kbps,分辨率为1280×526。

以上测试用例分别测试两组,每组5次,取平均值。详细的屏幕内容共享系统的网络流量速率统计的测试结果如表1所示。

表1 不同屏幕内容共享系统网络流量速率测试结果Tab.1 Test result of network traffic for different screen sharing systems

从以上结果可以看出,VNC与RDS软件主要适用于文字为主的屏幕内容共享场景,切换到视频播放场景时,所需带宽激增。与传统算法相比,本文所设计的系统对不同应用场景所需的带宽变化不大,相对平稳,当切换到视频播放场景时,带宽占用率低,优势明显。

5 结 论

详细介绍了一种基于嵌入式平台大屏幕内容分享系统的设计与实现。针对传统屏幕内容分享软件占用带宽大、画质差、不适合视频内容分享的问题,提出了一种基于场景识别的码率自适应算法。该算法能够根据当前活跃的窗口句柄、进程信息智能识别屏幕当前的应用场景,并根据网络拥塞状况选择适合当前应用场景及网络状况的码率。实验表明,该算法具有占用带宽小、画质好的优点,能够满足视频内容的屏幕共享需求。

[1]潘兆泰.交互式屏幕共享的低复杂度压缩和低延时传输方法[D].合肥:中国科学技术大学,2013.Pan Z T.Low-complexity compression and low-latency transmission for interactive screen sharing[D].Hefei:University of Science and Technology of China,2013.(in Chinese)

[2]Scheifler R W,Gettys J.The X Window system [J].ACM Transactions on Graphics,1986,5(2):79-109.

[3]Richardson T,Stafford-Fraser Q,Wood K R,et al.Virtual network computing [J].IEEE Internet Computing,1998,2(1):33-38.

[4]Schwarz H,Marpe D,Wiegand T.Overview of the scalable video coding extension of the H.264/AVC standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2007,17(9):1103-1120.

[5]祝世平,张玲.基于分形和 H.264的视频编码系统[J].光学精密工程,2013,21(3):774-781.Zhu S P,Zhang L.Video coding system based on fractal and H.264[J].Optics and Precision Engineering,2013,21(3):774-781.(in Chinese)

[6]吴银花,金龙旭,张柯.应用Jmode值单调性的快速P帧模式选择算法[J].液晶与显示,2013,28(2):266-272.Wu Y H,Jin L X,Zhang K.Fast P-frame mode decision algorithm using monotonicity of Jmode[J].Chinese Journal of Liquid Crystals and Displays,2013,28(2):266-272.(in Chinese)

[7]刘艳青,苏桂莲.基于 Qt4的图形用户界面程序的设计与实现[J].现代计算机:下半月版,2009(3):170-172.Liu Y Q,Su G L.Design and implementation of graphical user interface program based on Qt4[J].Modern Computer,2009(3):170-172.(in Chinese)

[8]吴银花,金龙旭,张宁,等.针对 H.264改进的快速整像素运动估计算法[J].光学精密工程,2013,21(4):1017-1025.Wu Y H,Jin L X,Zhang N,et al.Improvement of fast integer pixel motion estimation algorithm for H.264 [J].Optics and Precision Engineering,2013,21(4):1017-1025.(in Chinese)

[9]李军杰.基于FFmpeg的 H.264解码器在Symbian上的移植和优化[D].武汉:华中科技大学,2011.Li J J.The implementation and optimization of symbian’s H.264decoder based on the FFmpeg [D].Wuhan:Huazhong University of Science & Technology,2011.(in Chinese)

[10]Liu Y H,Wang S.An embedded multimedia player on S3C6410platform [J].Advanced Materials Research,2012,571:680-686.

[11]Ni H B,Cao S X.Research and implementation of asynchronous video converter based on Linux[J].Applied Mechanics and Materials,2013,241:2596-2600.

猜你喜欢

码率服务器端线程
基于C#线程实验探究
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
Linux环境下基于Socket的数据传输软件设计
基于国产化环境的线程池模型研究与实现
基于状态机的视频码率自适应算法
浅谈linux多线程协作
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用