视频播放分辨率检测系统的设计与实现开题报告
2021-02-26 11:21:23
1. 研究目的与意义(文献综述)
用户在使用智能手机或者平板上第三方播放器应用播放视频的过程中,由于市场上的各种视频播放器界面设计不一,分辨率的分类各异,进而导致了相当一部分用户在播放视频的时候未能设置合适的视频分辨率,从而导致观看的视频不清晰,进而影响到用户对于智能手机或者平板的使用体验。因此本系统旨在当用户播放视频时,根据使用的视频播放器、网络条件和适用的分辨率等给予用户一定地使用提示,从而提升用户的视频观看体验。
国内研究现状:
2. 研究的基本内容与方案
本系统服务目标是为当前应用市场TOP5视频播放应用(爱奇艺、乐视视频、芒果TV、腾讯视频、搜狐视频)以及UC和QQ浏览器,提供相应的提示功能。基本功能应具有检测当前白名单播放器在播放视频时的实时分辨率、检测播放设备的状态和检测当前WiFi信号强弱,并根据WiFi信号的强弱判断是否提示用户,即在WiFi信号不满足更高分辨率的网速需求时,能够不提示用户设置更高的分辨率等功能。
拟采用的技术方案及措施:
如图1所示,方框内部为SurfaceMonitorService服务的内部实现的方法,也包含与外部的接口,其中系统服务可以触发onEvent接口,即当视频应用启动时服务会获取到SystemService广播的消息,进而启动本服务,得到SurfaceFlinger图层信息,并根据当前实际运行的应用进行对应的后续操作。
图1 SurfaceManager服务框架图
由理论框图1按照以下的调用流程即可获取各个应用的分辨率信息。
(1)system_server启动时,SurfaceMonitorService启动,同时向SystemService注册客户端,注册成功时会回调onDaemonConnected接口,从LCD Driver中读取屏幕物理尺寸和分辨率,从配置文件system/etc/media_resolution.xml中读取分辨率提示阈值。
(2)视频应用启动时,onEvent会被回调,上报Video_Front事件;视频开始播放时,onEvent会被回调,上报Video_Start事件;视频播放退出时,onEvent会被回调,上报Video_End事件。
onEvent将消息发给MsgHander。
(3)doHandelMessage对事件消息做处理
表1 各个消息的含义对照
Video_Front | Video_Start | Video_End |
保存应用包名 | 延迟2分钟,执行动作⑤ | 移除Video_Start的消息处理队列 |
(4)调用SurfaceFlinger的getVisibleLayers接口,获取当前可见图层信息,按照Z轴自顶向下排序,包括:
A:Layer名称
B:源图像尺寸及坐标
C:目标拉伸图像尺寸及坐标
(5)对当前显示图层信息进行分析,典型的图层信息部分如下:
SurfaceView表示视频图层
source crop表示视频坐标及大小
frame表示拉伸后的坐标及大小
对于Android L版本图层解析方法:对于所获取的图层信息,先提取出type为HWC且name为SurfaceView的信息(字符串),然后将source crop(l,t,r,b)列数据中的r,b,此数据即可计算出视频播放的实时分辨率。对于安卓L版本,解析的第七项table[7]为分辨率信息。
3. 研究计划与安排
2017.02.20-2107.03.01:查阅项目相关资料,分析其他类似项目的优缺点及实现方法。
2017.03.01-2017.03.10:根据前期的分析以及调查设计出项目的框架结构。
2017.03.10-2017.03.25:将后期开发所需技术以及难点进行系统的学习,将所需开发环境以及准备相关资料。
4. 参考文献(12篇以上)
[1]邓凡平.深入理解android 卷一[m].机械工业出版社,2011.09.01
[2]柯元旦.android 内核剖析[m].北京:电子工业出版社,2011:59-70