• 3574阅读
  • 1回复

linux下安装gstreamer并结合qt开发音乐播放程序 [复制链接]

上一主题 下一主题
离线lsyzsl
 

只看楼主 倒序阅读 楼主  发表于: 2017-03-23
最近需要使用qt在linux开发一款影音软件,于是就开始着手研究相关东西,步骤如下:
环境:操作系统的安装镜像为Fedora-14-i386-DVD.iso,使用的qt版本为qt-everywhere-opensource-src-4.8.7.tar.gz。
1.首先在fedora14上安装qt-everywhere-opensource-src-4.8.7.tar.gz,我的配置选项是:
./configure -debug-and-release -no-qt3support -system-sqlite -multimedia -audio-backend -phonon -phonon-backend -svg -webkit -qt-libpng -qt-libjpeg -system-nas-sound -opengl
在配置时会提示操作系统不支持phonon模块,解决方法是使用 yum -y  install libgstreamer* --nogpgcheck和yum -y  install libphonon* --nogpgcheck,更新完毕后该错误可以消除。
在安装qt的时候,会出现以下错误

-------------------------------------------------------------------------------
--------------------------------------1----------------------------------------
-------------------------------------------------------------------------------
gmake[1]: 进入目录“/qt-everywhere-opensource-src-4.8.7/src/gui”
g++ -c -include .pch/release-shared/QtGui -pipe -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -I/usr/include/freetype2 -fPIC -DQT_SHARED -DQT_BUILD_GUI_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_OPENTYPE -DQT_NO_STYLE_MAC -DQT_NO_STYLE_WINDOWSVISTA -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_WINDOWSCE -DQT_NO_STYLE_WINDOWSMOBILE -DQT_NO_STYLE_S60 -DQ_INTERNAL_QAPP_SRC -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtGui -I.rcc/release-shared -I../3rdparty/xorg -Iimage -I/usr/include/freetype2 -I../3rdparty/harfbuzz/src -Idialogs -I.moc/release-shared -I/usr/X11R6/include -I.uic/release-shared -o .obj/release-shared/qsound_x11.o kernel/qsound_x11.cpp
kernel/qsound_x11.cpp:56:28: 致命错误:audio/audiolib.h:没有那个文件或目录

把该目录下的audio.tar.gz解压到usr/include/audio/下即可
-------------------------------------------------------------------------------
--------------------------------------2----------------------------------------
-------------------------------------------------------------------------------
-everywhere-opensource-src-4.8.7/lib -L/usr/X11R6/lib -lQtCore -L/qt-everywhere-opensource-src-4.8.7/lib -lpthread -laudio -lXt -pthread -lgthread-2.0 -lrt -lglib-2.0 -lpng -lz -lfreetype -lSM -lICE -lXrender -lfontconfig -lfreetype -lXext -lX11 -lm
/usr/bin/ld: cannot find -laudio

把该目录下的libaudio.so.2.4放入到/usr/lib/下,然后做以下链接:
[root@Bozone qt-everywhere-opensource-src-4.8.7]# ln -s /usr/lib/libaudio.so.2.4 /lib/libaudio.so
-------------------------------------------------------------------------------
--------------------------------------3----------------------------------------
-------------------------------------------------------------------------------
gmake[3]: 进入目录“/qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/WebKit/qt/tests/qwebframe”
g++ -Wl,-rpath-link,/qt-everywhere-opensource-src-4.8.7/lib -Wl,-O1 -Wl,-rpath,/qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/lib -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -o tst_qwebframe .obj/release-shared/tst_qwebframe.o .obj/release-shared/qrc_tst_qwebframe.o    -L/qt-everywhere-opensource-src-4.8.7/lib -L/usr/X11R6/lib -L/qt-everywhere-opensource-src-4.8.7/lib -lQtDeclarative -lQtScript -lQtSvg -L/usr/X11R6/lib -lQtSql -lQtXmlPatterns -lQtWebKit -lQtTest -lQtGui -lQtNetwork -lQtCore -lpthread -lXrender -lfontconfig -lfreetype -lXext -lX11 -lm
/usr/bin/ld: warning: libaudio.so.2, needed by /qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so, not found (try using -rpath or -rpath-link)
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuCloseServer'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuSoundPlayFromFile'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuStopFlow'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuDestroyBucket'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuSoundCreateBucketFromFile'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuHandleEvents'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuFlush'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuSync'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuSoundPlayFromBucket'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuScanEvents'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuOpenServer'
/qt-everywhere-opensource-src-4.8.7/lib/libQtGui.so: undefined reference to `AuSetCloseDownMode'
collect2: ld 返回 1
gmake[3]: *** [tst_qwebframe] 错误 1
解决方法:ln -s /usr/lib/libaudio.so.2.4 /lib/libaudio.so.2

解决完成以后按照提示,gmake && gamke install

2.安装Gstreamer
这个玩意儿安装是最扯淡的,里面的版本太多,下载的版本如果和操作系统不吻合会提示各种各样的错误,让你看到就烦。经过两天的摸索,终于找对了版本安装成功。需要下载的文件如下:gstreamer-0.10.36.tar.gz gst-plugins-base-0.10.36.tar.gz gst-plugins-good-0.10.31.tar.gz
安装时需要按照先安装gstreamer-0.10.36再安装gst-plugins-base-0.10.36最后gst-plugins-good-0.10.31。每进入一个目录内都需要执行./configure && make  & make install。具体的安装方法就不写了,如果出现configure: Requested 'gstreamer-plugins-base-0.10 >= 0.10.36' but version of GStreamer Base Plugins Libraries is 0.10.31
configure: error: no gstreamer-plugins-base-0.10 >= 0.10.36 (GStreamer Base Plugins) found错误,则执行这句export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH即可。安装方法网上一搜一大堆。

3.安装完成后这里有个测试的例子,如果编译成功并且可以播放音乐,那么Gstreamer就安装成功。
最后附上下载地址
Gstreamer官方下载地址
https://gstreamer.freedesktop.org/src/
由于这三个文件没法上传,需要自己去下载。
测试示例: test.tar.gz (2118 K) 下载次数:7


离线lsyzsl

只看该作者 1楼 发表于: 2017-03-23
qt在linux下未能正常播放音乐和视频,提示错误如下:
"Warning: You do not seem to have the base GStreamer plugins installed.
          All audio and video support has been disabled"
Phonon::GStreamer::Backend: Failed to initialize GStreamer

(<unknown>:3485): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed
WARNING: Phonon::createPath: Cannot connect  Phonon::MediaObject ( no objectName ) to  Phonon::AudioOutput ( no objectName ).
求大神指点!!!!
快速回复
限100 字节
 
上一个 下一个