在设计我的系统时,需要编写发出声音的代码,在网上搜罗了一些方法进行尝试,最终解决了在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
要注意这几个组件的安装顺序,因为安装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
后面那三行不知道咋解决