Qt 的multimedia 模块 对各个操作系统 媒体处理功能的封装。比如windows采用 DirectX,而Linux采用GStreamer作为底层库,使用Qt Qt Multimedia 模块编程可以让类似于音乐播放,视频播放相关代码与操作系统无关,我们用一个视频播放例子来测试在Linux下使用
测试项目
测试程序采用Qt 帮助自带的video播放例子,代码本身不复杂,但是运行环境复杂,所以经常造成运行不成功的问题 。
没安装帮助可从这个链接下载。
https://pan.baidu.com/s/1qXKLrcC
multimedia 完整的运行环境。
除了应用程序和Qt运行库外, 还需要一系列的运行库,其中除运行库外,其余均是动态加
载,也就是说未安装,app能运行起来,但无法播放。
App --+
|
+-- Qt运行库
|
+-- Qt MultiMedia 插件
|
+-- GStreamer 运行库
|
+ 媒体解码库
二. Ubuntu 下测试
App --+
|
+-- Qt运行库 (libQt5Core.so.5/libQt5Multimedia.so.5)
|
+-- Qt MultiMedia 插件 (libgstmediaplayer.so /libgstcamerbin.so ....)
|
+-- GStreamer 运行库 ()
|
+ 媒体解码库
安装 媒体插件
在Ubuntu下,Qt 程序会从指定目录查找插件so(通常是/usr/lib/x86_64-linux-gnu/qt5/plugins). 如果指定目录
没有播放插件,将会提示、
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
解决办法最快的是安装编译好的播放插件
sudo apt-get install libqt5multimedia5-plugins
但是是注意,如果应用程序没有使用缺省的Qt 目录,则要把安装的插件手工拷备相应目录,检查Qt目录有两个办法,一是用ldd 运行,其中Qt库显示就是相应路径,下例就是/usr/local/qt-x86库 路径
ldd ./videographicsitem
linux-vdso.so.1 => (0x00007fffe4dbd000)
libQt5MultimediaWidgets.so.5 => /usr/local/qt-x86/lib/libQt5MultimediaWidgets.so.5 (0x00007f24f08a6000)
libQt5Multimedia.so.5 => /usr/local/qt-x86/lib/libQt5Multimedia.so.5 (0x00007f24f079e000)
libQt5Widgets.so.5 => /usr/local/qt-x86/lib/libQt5Widgets.so.5 (0x00007f24f0030000)
libQt5Gui.so.5 => /usr/local/qt-x86/lib/libQt5Gui.so.5 (0x00007f24efae4000)
libQt5Core.so.5 => /usr/local/qt-x86/lib/libQt5Core.so.5 (0x00007f24ef555000)
还有一种办法是在代码,输出库路径
qDebug() << QCoreApplication::libraryPaths() ;
这是运行结果,可以看到是从/usr/local/qt-x86/plugins 读插件目,因此需要从缺省目录拷入这一些动态库
./videographicsitem
("/usr/local/qt-x86/plugins", "/root/qt/build-videographicsitem-qt5_6_2_x86-Debug")
需要拷入如下动态库,拷入相应目录。

安装GStreamer
sudo apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-toolsgstreamer0.10-doc
sudo apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-badgstreamer0.10-plugins-bad-multiverse
安装解码库
出于版权的限制,GStreamer 本身不带解码库,可以手动安装ffmpeg 插件用于解码
在Ubuntu 14.04 下成功是
sudo add-apt-repository ppa:mc3man/gstffmpeg-keep
sudo apt-get update
sudo apt-get install gstreamer0.10-ffmpeg
运行效果

网友评论