在设计我的系统时,需要编写发出声音的代码,在网上搜罗了一些方法进行尝试,最终解决了在qt下发声的问题。
1、 调用qt本身的文件 QApplication::beep();//报警声
编写好之后运行发现并没有声音发出,查找qt的帮助文件发现在linux系统中QT不能使用该函数播放声音。
2、 第二种 自己添加文件其中包含这样集中添加方式

{1}QSound::play(":../**.wav");

{2}QSoundbells(":../sound/**.wav"); bells.play();

尝试了QSound的两种方法都不行,而且QSound在linux系统中只能播放WAVE格式的音频。

开始时以为问题是绝对路径的问题,修改成绝对路径也是没声音;

使用isAvailable()发现其返回值一直是false,说明无播放资源可用。

最后在网上搜到说是在Ubuntu下不能操作。

3、安装phonon,

在命令行下输入sudo apt-get install libphonon-dev libphonon4 phonon-backend-gstreamer

要注意这几个组件的安装顺序,因为安装backend的时候会卸载dev,所以最后最好再安装一遍dev.

安装phonon就可以使用#include 文件了

(不过在.pro必须包含QT += phonon条语句)。

使用语句:
Phonon::MediaObject *music = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource("/home/myprogram/qt/QTFaceRec-build-desktop/test.wav"));
music->play();
还可以播放视频:
Phonon::MediaObject *movie = Phonon::createPlayer(Phonon::VideoCategory,Phonon::MediaSource("/home/XX.avi")); movie->play();
使用Phonon编写的播放音频成功,但是也有很多警告啊什么的
WARNING: Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface 
Cannot connect to server socket err = 没有那个文件或目录
Cannot connect to server socket
jack server is not running or cannot be started
警告的解决办法:
http://blog.csdn.net/makuiyu/article/details/7417830
后面那三行不知道咋解决
Logo

更多推荐