【PHP开源代码栏目提醒】:网学会员--在 PHP开源代码编辑为广大网友搜集整理了:基于QtWebk-t的浏览器视频插件 - 会议论文绩等信息,祝愿广大网友取得需要的信息,参考学习。
第22卷第2期 计算机技术与发展 V01.22 No.2 2012年2月 COMPUTER TECHNOLOGY AND DEVELOPMENT Feb.2012 基于QtWebkit的浏览器视频插件 李迪1,丁娅2 (1-华中科技大学电子与信息工程系,湖北武汉430074; 2.华中科技大学计算机科学与技术学院,湖北武汉430074) 摘要:为了解决基于Webkit引擎的嵌入式浏览器不能播放网页中嵌套的视频文件的问题,设计了一种简单有效的视频 播放插件模型。
该设计Ⅸ别于传统的NPAPI标准插件,通过继承Qt自带的控件类并承载其中的方法来实现该插件的注 册,利用鄄lay实现数据流的获取和解码显示,设计用户界面负责响应用户事件并控制唧lay的播放,并通过nF0管道和 状态机来实现播放界面和ffplay的通信。
最后在嵌入式平台下实现r该设计。
经工程实践表明,该方法行之有效,通过该 插件能够流畅观看鼹页中的视频文件。
关键词:插件;播放器;浏览器引擎;嵌入式;命名管道 中图分类号:TP393.09 文献标识码:A 文章编号:1673—629Xf2012)02—0238-03 Design and Implementation of Browser Player Plug——in Based on QtWebkit LI Dil。
DING Ya2 (1.Dept of Electronics and Information Engineering-Huazhnng University of Science and Technology。
Wuhan 430074.China; 2.School of Computer Science and Technology,Huazhong University of Science and Technology。
Wuhan 430074。
China) Abstract:Videos in web pages carl not bc pIayed by embedded browser which is based on Webkit.Aiming at this problem。
design a sim- pie and effective player plug-in model.Being different from the traditional NPAPI plug—in。
this plug-in is registered by inheriting Qt’s methods,the get data stl’can塔and decode them。
it designs the interface in class and overloading its uses tO user plug-in ffplay response tO user events and to oontrol却18y,and realizes the communication of UI and ffpiay by FIFO and state machine.The design is tinally a- thieved in the embedded platform.The plug—in makes users watch videos in web pages smoothly。
which has been proved by the删∞ Key words:plug-in;player;browser engine;embedded;FIFOO引 言 器视频插件,使用户能通过嵌入式设备中的浏览器流 近年来,嵌入式市场迅速崛起,嵌入式设备也被广 畅观看网页中嵌入的视频文件。
泛应用于各个领域,如智能手机、口电视、导航设备等。
用户通过嵌入式设备中的浏览器访问因特网成为 1浏览器插件技术了一种重要应用,浏览器则需要提供相关插件来支持 1.1浏览器层次结构用户访问互联网上丰富的多媒体信息。
文中首先介绍 图l是浏览器层次模型图。
最底层是操作系统浏览器的层次结构,然后比较了QtWebkit支持的两类 层,包括浏览器引擎正常运作所需的各类软硬件资源;插件:NPAPI插件和Qt—based plug-in,经分析选择了 第二层是接口层,提供引擎在不同平台移植所需的接后者,最后设计并实现了基于QtWebkit的嵌入式浏览 口;第三层最重要,是浏览器引擎层,包含浏览器引擎 (如Webkit)、各类插件及其它第三方库…;最上层是 应用层,完全独立于引擎,用户可根据需要轻松扩展或收稿日期:2011-07—04:修回日期:2011-10-15基金项目:国家高技术研究发展计划(863计划)(2009AA063001) 修改上层应用旧1。
作者简介:李迪(1987一),男,硕士研究生,研究方向为嵌入式开 1.2 QtWebkit介绍发、有线网络通信、数据库系统。
Qt是跨平台的图形用户界面工具包”’。
Qt/Em- 第2期 李迪等:基于QtWebkit的浏览器视频插件 ·239· bedded Linux则是专为嵌入式Linux优化的Qt版本, 小以及视频的播放、暂停等。
插件界面和ffplay之间 其4.5版中集成了Webkit引擎的核心模块部分,简称 通过创建一个命名管道fifo进行通信,实现插件与雎 QtWebkit。
Qt强大的功能和良好的平台无关性,使得 play的协同工作。
QtWebkit出现了众多新的扩展应用…。
图2浏览器视频播放插件模块结构图 2.2视频播放插件实现流程 在设计中尽量保证模块化设计,使浏览器与唧lay 的交互位于应用层,独立于Webkit,避免了每次关于 ffplay的
代码调整都需要修改并编译Webkit库,使系 统更易于维护。
视频播放插件的具体实现流程如下: (1)浏览器引擎Webkit通过RenderPartObject类 中的updateWidget函数检测网页中<object>一1或者< embed>标签并对mimeType、elassid、width、height等属 图l 浏览器层次模型图 性值进行解析; 1.3 QtWebkit支持的两类插件 (2)RenderPartObjeet类以解析出的各属性值作参 QtWebkit引入了对NPAPI的支持,NPAPI是多数 数生成插件实例并绘制插件窗口。
为保证通用性,在 浏览器都支持的跨平台插件标准【5】,它提供两类插件 遇到NPAPI视频插件的mimeType时,均统一转换为 接口〔61:第一类由浏览器端实现,插件调用,以NPN一 “MoviePlayer”,生成插件
代码如下: 开头;第二类由插件端实现,浏览器调用,以NPP一开 if(classld==tr(”MoviePlayer”)) 头。
通过撰写一个符合NPAPI标准的插件,并将其编 player=new MoviePlayer(view());译成动态库的形式放置于浏览器插件默认的位置,即 其中,MoviePlayer即是文中实现的播放器控件类, 可实现NPAPI插件的注册F。
。
通过其构造函数生成一个插件实例并进行一系列初始 另外,得益于
开源浏览器引擎Webkit与Qt4.5的 化,包括控件大小、位置、颜色,命名管道的创建,控制应用程序和uI框架的集成模糊了本地应用程序与网 按钮的创建和布局,信号和槽的连接等。
这样就实现络内容之间的界限,QtWebkit还支持Qt based plug-in, 了将自定义的控件嵌入到网页中,Webkit从网页中解利用它可将Qt自带的控件或用户实现的控件嵌入到 析出各种插件类型,但最终通过转换只使用Qt的插件Web页面中。
QWebPluginFactory是Webkit供应用程 机制;序调用的接口之一,应用程序通过继承QWebPlugin— (3)Framel_Dader通过调用FrameLoaderClientQt类Factory类并重载该类中的方法来实现Qt-based plug- 给QWebpage发送signal信号,通知浏览器已经完成了in这类插件的注册。
插件的生成和绘制; (4)浏览器的WebView收到该信号后,通过函数2设计与实现 MoviePlayer::showMovie调用卸lay播放视频,这里不 NPAPI插件的实现需要x11协议的支持,QtWeb- 用system调用打开邱Iay,而是用Qt封装的Qprocesskit基于linux framebuffer实现图形引擎,不支持XI 1协 类调用邬lay,具体
代码是process.start(“ffplay”,议∽〕,因此基于QtWebkit实现NPAPI插件比较困难。
姆),参数args中包含视频编码格式、宽度、高度、帧文中选择利用QWebPluginFactory来实现Qt—based 率、ud以及命名管道的读写文件路径等信息;plug-in。
(5)仃play播放结束后,MoviePlayer发信号通知浏2.1模块结构 览器,WebView调用浏览器主窗口的reShow函数实现 图2是浏览器视频播放插件的模块结构图。
插件 浏览器主窗口和插件窗口的重绘。
界面(Player Plug-in UI)负责和用户打交道,响应用户 2.3关键技术描述事件并控制ffplay的播放。
邱lay负责从指定的URL 在视频播放插件的过程中,主要完成获取数据流并进行解码显示(直接操作Framebuffer), 了自定义的视频播放插件类MoviePlayer,并实现了插并根据插件界面传来的消息控制界面显示的位置、大 件与播放器的友好互动和协同工作。
关于MoviePlayer ·2140· 计算机技术与发展 第22卷的初始化、调用以及其与浏览器和播放器之间的信号 3实验交互在2.2节中已有裰关描述,下面介绍其它所涉及 3.1实验场景的关键技术: 为了检验文中的设计方案,设计了一套测试方案。
甲2.3.1命名管道 测试环境框图如图3所示。
利用命名管道进行通信,创建了两个命名管道文件FIFO_R和FIFO_W,分别用作读和写。
在插件端并 ▲没有创建专门的线程来读取管道消息,而是利用了Qt提供的一个类:QsocketNotifier〔1引,它实现了针对特定文件描述符的select等操作,并通过signal进行通知,一旦FIFO_R内有可读消息,则会调用MoviePlayer的 ④叫卫readFfplayData函数进行读取。
2.3.2状态机 为了实现插件与播放器协同工作,还实现了一个状态机¨“。
插件接收用户的遥控或者鼠标事件,然后 图3测试环境框图发送相应的控制信息给播放器,如表l所示: 其中,媒体服务器是在一台电脑上的Linux系统 袁l插件端控制信息表 中搭建的LAMP服务器(Linux+Apache+Mysql+PHP)。
CMD._PLAY 暂停后继续播放 远程教育机顶盒即为文中所说的实际项目,文中设计 的视频播放插件也工作于其中。
电视机连接远程教育 CMD—PAUSE 暂停 机顶盒的输出,利用遥控器进行相关操作。
点击远程 FULL_SCREEN 全屏播放 教育机顶盒中的在线学习和媒体娱乐两个模块。
则会 QU爿£SCREEN 退出全屏 调用浏览器,通过Internet访问媒体服务器中的相关页 EXrr 关闭播放器进程 面,然后点击其中的视频连接则可以开始测试播放情 VIDEO—DISABLE 越界时不允许输出画面 况。
S斟fP(玲%d%d 设置播放器位置 3。
2实验数据 在搭建的实验环境下进行测试,点击在线学习和 对应地,播放器也会发送相应反馈信息给插件,使 媒体娱乐模块中的4个视频链接,实验数据如表3所插件能正确获取播放器当前所处的状态,如表2所示: 示: 表2播放器端控制信息表 表3实验数据统计表 START—DISPLAY OK 正常开始疆敖 视频链接号 I 2 3 4 均值 PLAY-oK 暂停后正常重新播放 O.5 J.O 1.0 0.5 1.O 响应时间(s) QUAT_SCREEN—OK 正常非全屏播放 是否有画面 是 是 是 是 PAUSE—OK 正常暂停 是否有声音 是 是 是 是 F1JUJCREEN—0K 正常全肄播放 视频延时(e) O O.5 0 l 0.375 SETPOS OK 正确设置播放器位置 cPU占用宰 6% 4.9% 4.8% 5% 5.23% VIDEO—DISABLE OK 正常关闭播放器画面输出 3.3结果分析 另外对播放器控制时需注意,浏览器在滚动时,会 测试结果表明,视频插件对系统资源占用率低。
不断触发resizeEvent事件,因此不能直接在resizeEvent 能够流畅播放网页中的视频文件,并且响应时间短,音事件的处理函数中对播放器进行位置设置,而是应该 视频延时低。
解决了该嵌入式浏览器无法播放视频文在resizeEvent处理函数被调用一段时间不再有re- 件的问题。
sizeEvent事件后,才通知播放器进行位置设置。
2.3.3递归获取窗口位置 在视频播放插件生成和显示时,获取的是插件相 4结束语对于其父窗口的位置,因此采用递归方式获取插件的 文中针对实际项目中的需求,设计了一套方案为准确位置,即不断查找上级父窗13位置,直至顶层窗口 基于Webkit的浏览器增加视频插件模块。
该方案首 先设计人性化的插件界面来提供人机交互接口,然后 (即屏幕),然后将各相对位置的并、,,坐标相加即得到 (下转第244页)播放器相对于屏幕的位置¨“。
计算机技术与发展 第22卷 参考文献: 〔1〕kvm官方网站〔EB/OL〕.2011.WWW.1inux— .
上一篇:
基于MYSQL的学生信息管理系统数据库设计
下一篇:
asp论文:浅论ASP在多媒体网页课件制作中的应用