王巧莉 张振宇 刘慧 吴晓红
摘 要: 针对传统的屏幕共享环境已不能满足人们的需求等问题,文中利用机会网络可以在间歇式连通环境下实现节点通信的特性,设计并实现了一种基于机会网络的屏幕共享软件。该软件在机会网络的场景下,基于Spring?boot框架,使用FFmpeg视频音频转换器和Node.js跨平台等技术实现移动终端设备在网络间歇性连通状态下的设备搜索、配对、屏幕共享等功能。运行结果表明,在所设定的通信范围内的情况下,该软件能实现基本的数据共享,性能比较稳定。
关键词: 机会网络; 屏幕共享; 移动终端; 间歇式连通; 设备搜索; 通信范围
中图分类号: TN915?34; TP393 文献标识码: A 文章编号: 1004?373X(2019)10?0019?04
Method of implementing mobile terminal screen sharing in opportunistic networks
WANG Qiaoli1, ZHANG Zhenyu1,2, LIU Hui2, WU Xiaohong2
(1. College of Information Science and Engineering, Xinjiang University, Urumqi 830046, China;
2. College of Software, Xinjiang University, Urumqi 830008, China)
Abstract: In allusion to the problem that the traditional screen sharing environment cannot meet people′s needs, a screen sharing software based on opportunistic networks is designed and implemented by using the opportunistic network′s feature that node communication can be realized in the intermittent connection environment. With the software, the searching, matching and screen sharing functions of mobile terminal devices in the network intermittent connection state are realized in the opportunistic network scenario on the basis of the spring?boot framework by using the FFmpeg video?audio converter and Node.js cross?platform technology. The operation results show that the software can realize basic data sharing, and has a relatively?stable performance in the situation of preset communication range.
Keywords: opportunistic network; screen sharing; mobile terminal; intermittent connection; device searching; communication range
在容忍延迟网络与无线自组网的研究推动下,机会网络的概念逐渐形成且具有重要的意义[1] 。机会网络中的节点不需要有明确的链路,通过节点移动性带来的机会联系,以“存储?携带?转发”的方式转发消息[2]。机会网络具有更加灵活的组网方式,能够满足挑战环境下的通信需求,因此在野生动物追踪网络[3]、车载网络[4]等场景下得到了更好的应用。节点在不同的应用场景中移动特性各异,因此在设计相应的数据转发机制时必须要符合节点的实际移动情况。
近年来,利用移动终端进行数据采集和终端之间的内容共享已成为用户最迫切的需求,这样的背景为机会网络的应用提供了更加广阔的平台[5]。在位置识别应用中,只使用一部手机会对噪音比较敏感而且必须随时随地手持设备。因此文献[6]中提出SensOrchestra位置识别协作感知框架,通过与周围的手机形成自组网,协同感知周围的声音及图像等信息,提高了位置识别的准确度,也不需要一直手持设备。在文献[7]中提出一种媒体服务框架CoCam,在许多大型的活动中(现场演唱会、体育赛事等),坐在距离较远或角度较偏位置的用户常常会有较差的视觉体验,而CoCam框架使设备之间形成自组织网络同时利用手机自带的拍照或摄像功能,为现场的用户分发和共享图片及视频内容,使用户能够得到更好的现场体验。屏幕共享提供了这样一种环境,它允许远程客户机在容错时间内重现屏幕显示内容,从而为远程用户提供虚拟共享接口[8?9]。随着移动设备的快速发展,人们的期望也越来越高。针对以上要求,本文利用机会网络,不需要网络的完全连通性,适合于移动自组网网络的实际需求,设计并实现了一种基于屏幕的数据共享软件。该软件通过Spring?boot框架、FFmpeg视频音频转换器、Node.js跨平台等技术实现了移动终端设备在网络间歇性连通状态下的设备搜索、配对、屏幕共享等功能。运行结果表明,借助机会网络环境设定一定的通信范围的情况下,该软件能实现基本的屏幕数据共享,并且性能相对稳定。
1 屏幕共享核心技术实现
1.1 机会网络环境搭建
人类移动设备在机会网络中的活动呈现出地理社区的特征。有些节点的活动范围有限,仅限于有限的地理区域;有些节点有较大的活动范围,出现在不同的地理区域。根据人类移动设备机会网络中社会节点的移动特性,给出以下网络环境假设:
1) 在给定范围内加入的移动终端设备都可以不设限的搜索到;
2) 在给定范围内加入的移动终端设备都主动进行屏幕的共享;
3) 任何移动终端的离开都不影响整个环境中的其他设备;
4) 设定一个主动搜索终端,假设为中继终端。
1.2 Spring?boot框架
自2002年发布Spring[10]框架以来,它已经成为企业应用和开发领域中一个非常流行的基础框架。许多企业应用Spring框架开发和设计软件以满足特定的需求。Spring框架包含数十个不同的子项目,涵盖不同方面的应用开发。Spring框架包含了大量的子项目,这些子项目都有各自的优点和缺点。其优点是开发人员使用方便,缺点是存在很多使用问题。例如,每个子项目都有一定的学习曲线,开发人员需要知道这些子项目和组件的细节,并知道如何将这些子项目变成一个完整的解决方案,但没有关于如何使用这些组件的知道,也没有提供相关的最佳实践。不仅如此,对于使用Spring框架的新手开发人员来说,他们不知道如何更好地使用这些组件。Spring框架的另一个常见问题是,快速创建一个能够运行出来的应用是非常麻烦的。Spring?boot是一个基于Spring框架的新子项目,它开发于2013年,并在2014年4月发布1.0.0版本。Spring?boot相对Spring具有很多优点。例如,它可以自动配置Spring的各种组件,并且不依赖代码生成和XML配置文件;它为常见场景提供了建议的组件配置,大大提高了使用Spring框架时的开发效率。本文使用的Spring?boot框架主要是由于它的以下特性:
1) 能够创建一个可以独立运行的Spring应用程序;
2) 直接嵌入Tomcat或Jetty服务器,不需要部署WAR文件;
3) 提供推荐的基础POM文件简化Apache Maven配置;
4) 尽可能地根据项目依赖来自动配置Spring框架;
5) 提供可以直接用于生产环境的功能,如性能指标、应用信息及健康检查;
6) 无代码生成,也没有XML配置文件。
1.3 FFmpeg技术实现
FFmpeg[12?13]是一个快速的视频音频转换器,它可以捕获现场音频/视频源,包括任何采样率、尺寸调整之间的视频,并能提供各种高质量的滤镜系统。FFmpeg能夠从任意数量形式的输入文件中进行读取(如普通文件、管道、网络流、设备来源等),通过设置输入文件选项的标志?i进行标记,并写入到任意数量/形式的输出文件中,在命令行中若字符串不能被解释为任何一种选项,则将其作为一个输出文件。原则上,每个输入或输出文件都可以包含不同数量的数据流。特定文档中数据的数量和类型,这些都是由特定选择定义的容器格式决定,从输入文件溜向输出文件可以是自动进行的,也可以基于?map选项来指定。
1.4 Node.js跨平台实现
Node.js[14]采用Google V8运行,使用事件驱动、非阻塞、异步输入/输出等技术来提高工作性能,可以优化传输量和规范。Node.js大部分基本模块都是用JavaScript编写, JavaScript作为浏览器程序设计语言使之可以运行在用户的浏览器上。Node.js的事件驱动和异步编程是为网络服务编程而设计的,除此以外Node.js的非阻塞模式输入/输出处理能够在低系统资源消耗下呈现出高性能与出众的负载能力,非常适用于输入/输出资源的中间层服务[15]。在数据密集型分布式部署环境下,可以为实时应用系统的实现提供解决方案。服务器端的处理可以降低网络流量。
1.5 系统实现框架和流程
机会网络环境下的屏幕共享软件的具体实现步骤如下:
1) 设定一定的通信范围,初步设定为在同一个IP通信段,当移动终端设备携带数据进入设定的通信段时,中继终端将进行间歇性的搜索操作;
2) 中继终端设备将搜索到的其他设备对IP地址进行排序;
3) 进行屏幕共享的匹配操作;
4) 当匹配完成则进行屏幕的共享,中继设备总要间歇性的进行搜索,更新缓存中的IP地址。
整个平台运行需要服务器、手机客户端A和手机客户端B。A,B手机通过WiFi连接服务器之后开始共享屏幕以及接收并显示共享者共享的内容。整个过程是通过视频流数据发送形式实时实现的,屏幕共享系统的总体设计框架如图1所示。
图1 屏幕共享系统总体设计框架
屏幕共享的获取首先需要创建Virtual Display,只需通过Media Projection Manager获取Media Projection,然后通过Media Projection创建Virtual Display获取当前屏幕的视频流,如图2所示。
图2 屏幕共享屏幕获取原理
基于FFmpeg的推流器来实现视频帧数据的推流流程,推流器的作用是将本地的视频数据推送至服务器,视频帧数据通过RMTP协议以直播流的形式推送出去,如图3所示。
图3 屏幕共享数据流获取原理
2 系统运行
2.1 机会网络环境参数设置
本文通过机会网络中数据的“存储?携带?转发”模式对加入的移动设备进行屏幕的共享操作,由于机会网络是利用短距离无线通信技术(如蓝牙、WiFi等)实现数据交互,因此需要设置一定的限制参数,如表1所示。
表1 参数设置
2.2 运行结果分析
实现机会网络环境下的屏幕共享功能需要服务器端模块和客户端模块协同工作。在Android系统中,每个模块都来自不同层次的分布,用户接口模块、屏幕信息获取模块、显示模块、服务器处理线程、客户端处理线程都是位于应用程序框架层的;编码模块和解码模块属于底层的运行时库。服务器端和客户端都围绕用户接口模块完成各自的功能,具体的运行结果见图4~图8。
图4 屏幕共享启动程序
图5 移动终端搜索功能
图6 移動终端配对成功
通过运行结果显示,当中继设备间歇性地搜索完成后,选择需要的移动终端进行配对并实现最终的屏幕共享,完成数据的共享操作,其中对中继设备的间歇性搜索可以降低整个网络的开销。
图7 屏幕共享显示成功
图8 移动终端显示结束
3 结 语
本文通过在机会网络环境下,设定一定的通信范围,通过Spring?boot框架、FFmpeg视频音频转换器、Node.js跨平台等技术实现一种基于屏幕的数据共享软件。该软件在机会网络的场景中,实现网络间歇性连通状态下的设备搜索、配对、屏幕共享等功能。运行结果表明,该软件能实现基本的屏幕共享功能,并且性能相对稳定。在下一步的研究中,将考虑完全不借助于网络连接仅仅通过手机的ID号进行屏幕的共享。
参考文献
[1] XIONG Y P, SUN L M, NIU J W, et al. Opportunistic networks [J]. Journal of software, 2009, 20(1): 124?137.
[2] FALL K. A delay?tolerant network architecture for challenged internets [C]// Proceedings of the Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications. Karlsruhe: ACM, 2003: 27?34.
[3] EHSAN S, BRUGGER M, BRADFORD K, et al. Sufficient node density conditions on delay?tolerant sensor networks for wildlife tracking and monitoring [C]// Proceedings of the IEEE Global Telecommunications Conference. Kathmandu: IEEE, 2011: 1?6.
[4] ACER U G, GIACCONE P, HAY D, et al. Timely data delivery in a realistic bus network [J]. IEEE transactions on vehicular technology, 2012, 61(3): 1251?1265.
[5] 马华东,袁培燕,赵东.移动机会网络路由问题研究进展[J].软件学报,2015,26(3):600?616.
MA Huadong, YUAN Peiyan, ZHAO Dong. Research progress on routing problem in mobile opportunistic networks [J]. Journal of software, 2015, 26(3): 600?616.
[6] CHENG H T, SUN F T, BUTHPITIYA S, et al. SensOrchestra: collaborative sensing for symbolic location recognition [C]// Proceedings of International Conference on Mobile Computing, Applications, and Services. Berlin: Springer, 2010: 195?210.
[7] TOLEDANO E, SAWADA D, LIPPMAN A, et al. CoCam: a collaborative content sharing framework based on opportunistic P2P networking [C]// Proceedings of IEEE 10th Consumer Communications and Networking Conference. Las Vegas: IEEE, 2013: 158?163.
[8] GUO Dai, YAN Jian, WANG Wenjiang. Design and implementation of new screen sharing system [J]. Application research of computers, 2007, 24(6): 299?301.
[9] SHEN H, LU Y, WU F, et al. Low?cost real?time screen sharing to multiple clients [C]// Proceedings of IEEE International Conference on Multimedia and Expo. Suntec: IEEE, 2010: 980?985.
[10] 计文柯.Spring技术内幕:深入解析Spring架构与设计原理[M].北京:机械工业出版社,2012.
JI Wenke. Spring technology insider: in?depth analysis of Spring architecture and design principles [M]. Beijing: China Machine Press, 2012.
[11] WOODS D. Spring?Boot [EB/OL]. [2014?05?12]. https://infoq.cn/article/microframeworks1?spring?boot.
[12] AL-KHWARIZMI. FFmpeg 4.1 [EB/OL]. [2018?11?06]. http://ffmpeg.org/.
[13] SURHONE L M, TENNOE M T, HENSSONOW S F, et al. Ffmpeg [M]. [S.l.: s.n.], 2010.
[14] George Ornbo. Node.js入门经典[M].傅强,宗斌,译.北京:人民邮电出版社,2013.
ORNBO G. Introductory classic of Node.js [M]. FU Qiang, ZONG Bin, translation. Beijing: Posts & Telecom Press, 2013.
[15] 朴灵.深入浅出Node.js[M].北京:人民邮电出版社,2013.
PU Ling. Easy to understand Node.js [M]. Beijing: Posts & Telecom Press, 2013.