测试用界面样式
程序文件:
第一步:.pro文件需要添加媒体模块
Qt += multimedia
第二步:界面类添加需要的私有变量
// 播放器
QMediaPlayer* m_pMediaPlayer = {NULL};
// 麦克风测试
// 输入
QAudioInput* m_pAudioInput = {NULL};
// 输出
QAudioOutput* m_pAudioOutput = {NULL};
第三步:媒体变量初始化:媒体播放和音频输入输出
// 初始化音频播放
if(!m_pMediaPlayer)
{
m_pMediaPlayer = new QMediaPlayer(this);
QString path=QApplication::applicationDirPath()+"/test.mp3";
qDebug()<<"player path"<<path;
m_pMediaPlayer->setMedia(QUrl::fromLocalFile(path));
}
// 初始化音频采集格式
QAudioFormat format;
format.setSampleRate(44100);
format.setChannelCount(1);
format.setSampleSize(16);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
// 初始化音频输出输入
if(!m_pAudioInput)
{
m_pAudioInput = new QAudioInput(format);
}
if(!m_pAudioOutput)
{
m_pAudioOutput = new QAudioOutput(format);
}
第四步:
(1)扬声器测试按钮点击响应
void Widget::on_btnPlayerTest_clicked(bool checked)
{
// 扬声器测试
if(m_pMediaPlayer)
{
if(checked)
{
m_pMediaPlayer->play();
}
else
{
m_pMediaPlayer->stop();
}
}
}
(2)麦克风测试按钮点击响应
void Widget::on_btnMicTest_clicked(bool checked)
{
if(m_pAudioInput)
{
if(checked)
{
QIODevice *inputDevice = m_pAudioInput->start();
QIODevice *outputDevice = m_pAudioOutput->start();
QObject::connect(inputDevice, &QIODevice::readyRead, [=]() {
QByteArray audioData = inputDevice->readAll();
outputDevice->write(audioData);
});
}
else
{
m_pAudioInput->stop();
m_pAudioOutput->stop();
}
}
}
另外:
qt原生并没有设置系统默认扬声器和麦克风的函数,所以需要设置默认扬声器和当前使用的麦克风,需要调用对应的系统API,再windows下面设置的话,一般需要包含policyConfig.h这个头文件,该头文件需要你们自己去搜索下载,包含到项目里面;