使用Qt多媒体库Phonon库的心得体会

本文探讨了Qt多媒体库Phonon的特点、地位、与QtMultimedia的关系,以及在不同平台上的支持情况。重点阐述了Phonon在Windows和Linux下的使用体验,特别是后端插件的重要性。此外,还分享了Phonon在视频播放中的注意事项。
<style type="text/css"> <!-- @page {margin:2cm} p {margin-bottom:0.21cm} --> </style>

使用Qt多媒体库Phonon库的心得体会

首先明确一点是Phonon不是Qt的主线(mainline)项目,它是KDE项目的一部分。所以我们看到它并不带有Q开头。但是这层封装实在是太好了,所以很多介绍Qt的书籍也一并介绍了Phonon库。

其次需要了解的是Phonon的地位。因为Phonon不是Qt项目,所以Qt项目为发展自己的多媒体库而提出了QtMultimedia模块。在最新的Qt5中,我没有看到Phonon的身影,甚至在Qt的新东家Digia的网站上,也鲜有介绍Phonon。这充分地说明Qt以后不会侧重于发展Phonon,而是发展QtMultimedia,同时也说明Phonon已经成熟。

最后说一下PhononQtMultimedia的关系。正如Qt文档中介绍,Phonon提供的是一系列高层的调用,而QtMultimedia是对媒体低层的调用。我曾经分别实现过使用微软的DirectMusicDirectSound,我发现使用DirectMusic的接口丰富,可支持的文件格式众多,而DirectSound则需要自己对特定格式(如ogg)进行解码转为原生支持的格式(wav格式)才能播放。其实Phonon就相当于DirectMusicQtMultimedia就相当于DirectSound


linux下使用Phonon库要比在Windows下使用要麻烦得多。因为在Linux下要使用特定的后端(backend)以插件的形式进行支持才行。Linux下的后端比较多,有VLCGstreamer等。这里以Ubuntu为例,因为默认的多媒体后端就是Gstreamer

开始没有留意,原来诺基亚时代的QtLinux安装包已经有了PhononGstreamer后端,如果编译Phonon出现了类似“cannotfind -lpulse-mainloop-glib”的错误,在Linux下可以执行“sudoapt-get install libpulse-dev”来安装libpulse,如果发现了

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded

WARNING:Phonon::createPath: Cannot connect Phonon::MediaObject ( noobjectName ) to Phonon::AudioOutput ( no objectName ).

WARNING:bool Phonon::FactoryPrivate::createBackend() phonon backend plugincould not be loaded


错误,那么需要安装gstreamer后端,命令是“sudoapt-get installphonon-backend-gstreamer”,安装完毕后找到phonon_backend文件夹(里面有libphonon_gstreamer.so文件,我的是在$QTDIR/plugins/里面找到的,诺基亚时自带的就是好)复制粘贴到生成程序的目录下。放心,应用程序会寻找到这个动态链接库的。


Phonon在各个平台的支持情况又如何?

我制作了一个小的实验程序,发现在新安装的WindowsXPghost版)下只能支持asfavimpeg等“古老”的格式,而在新安装的Windows8下可以支持mp4等新的格式。但是总的觉得Phonon的后端所支持的格式实在是有限。一般来说,WindowsMediaPlayer能支持的格式,使用Phonon开发的程序也能支持。不过像我一样的开发者要开发后端的插件真的很难。所以在Windows下使用Phonon不能满足我们对于新格式的解码需求,这迫使我们使用另外一个Qt的另外一个组件——QtMultimedia。目前我实现了QtMultimedia下载入Ogg文件并且播放的方法。

在Linux(我所熟悉的Ubuntu)下,由于Gstreamer的解码能力非常强,所以大部分主流格式都能够支持。


使用PhononVideoWidget时,需要注意它的虚成员函数paintEvent()是无法被重载,也就是说,你重载了了paintEvent()函数,也也无法让你的paintEvent()运行,可能因为VideoWidget不使用paintEvent()函数来负责渲染。

基于QT完成的集计算器、电子相册、相机、记事本、多媒体音乐播放器、2048小游戏为一体的多媒体系统,有系统语音提示等。(遇到问题可以评论,注意注册和登录密码等数据默认保存在C盘下的Database文件夹下,使用前需先在C盘新建一个Database命名的文件夹) 项目使用软件: QtCreate5.12 项目使用模块: 数据 GUI 界面设计 多媒体 摄像头 截图 文字转语音 动画显示 界面包含内容 一、 开机动画界面设计(自定义图片显示,图片放置欢迎字样) 二、 登录注册设计 注: 1. 注册 数据+MD5 加密 让用户自由注册 a. 点击注册跳转到账户注册界面、点击注册中返回可以返回登录界面 b. 注册界面数据设置为不为空,用户名和用户账号不能有重复 c. 确认注册进行数据的插入,字段:用户名、性别、账户、密码 注册成功:消息盒子提示成功,清空输入框的内容 注册失败:消息盒子提示用户存在 d. 取消注册清空所有输入框内容 e. 限定输入框的输入长度,在对应的输入框设置提示内容 f. 如何确定选择的是男还是女提示:if 判断 ui-> QRadioButton->isChecked() 2. 登录 通过查阅数据进行对比登录 成功登录:消息盒子提示成功,播报用户名,跳转到主界面 失败登录:消息盒子提示失败,清空账户和密码 3. 输入框设计为椭圆状,设置输入提示字符 4. 按钮设置点击和触摸时颜色切换效果或者使用图片作为背景 5. 界面背景设置为图片,标题设置为中文,图标设置为图片 三、 主界面设计 1. 按钮设置点击和触摸时颜色切换效果或者使用图片作为背景 2. 界面背景设置为图片,标题设置为中文,图标设置为图片 3. 时间显示控件自由选择 4. 进入其他界面操作时进行语音提示 5. 所有子界面能够返回主界面,在返回主界面时进行消息盒子提示 6. 设置所有子界面的标题文字
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值