通过QAudioOutput播放wav文件时只发出嗡嗡声
在Windows 7桌面和笔记本电脑上使用Qt 5.5.1。通过QAudioOutput播放wav文件时只发出嗡嗡声
我只能听到嗡嗡的声音,没有别的。请指导。
链接到wav文件,我想 - https://www.dropbox.com/s/frfy43d8hznptgf/c.wav?dl=0
我与MP3文件也试过这样。我得到的只是嗡嗡声。
的可再现的例子:
#include <QCoreApplication>
#include <QAudioOutput>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QAudioOutput* audioOutpu;
QFile sourceFile;
sourceFile.setFileName("c.wav");
bool p = sourceFile.open(QIODevice::ReadOnly);
if (p == false)
qDebug() << "no file";
else
qDebug() << "yes file";
QAudioDeviceInfo d1;
QList<QAudioDeviceInfo> l1 = d1.availableDevices(QAudio::AudioOutput);
qDebug() << "======================================================";
qDebug() << l1.first().supportedCodecs();
qDebug() << l1.first().supportedChannelCounts();
qDebug() << l1.first().supportedSampleTypes();
qDebug() << l1.first().supportedSampleRates();
qDebug() << l1.first().supportedSampleSizes();
QAudioFormat desiredFormat1;
desiredFormat1.setChannelCount(2);
desiredFormat1.setByteOrder(QAudioFormat::LittleEndian);
desiredFormat1.setCodec("audio/pcm");
desiredFormat1.setSampleType(QAudioFormat::SignedInt);
desiredFormat1.setSampleRate(44100);
desiredFormat1.setSampleSize(16);
QAudioDeviceInfo info1(QAudioDeviceInfo::defaultOutputDevice());
if (!info1.isFormatSupported(desiredFormat1))
{
qWarning() << "Default format not supported, trying to use the nearest.";
desiredFormat1 = info1.preferredFormat();
}
audioOutpu = new QAudioOutput(desiredFormat1);
audioOutpu->setVolume(1.0);
audioOutpu->start(&sourceFile);
qDebug() << "bbbbbbbbbb";
QEventLoop loop;
QObject::connect(audioOutpu, SIGNAL(stateChanged(QAudio::State)), &loop, SLOT(quit()));
do {
loop.exec();
} while(audioOutpu->state() == QAudio::ActiveState);
return a.exec();
}
输出:
您的wav文件是不是真的WAVE format,这里是MediaInfo与文件相关联的输出:
Format : MPEG Audio
File size : 4.67 MiB
Duration : 5mn 6s
Overall bit rate mode : Constant
Overall bit rate : 128 Kbps
Track name : Careless Whisper
Performer : Kenny G
Genre : Instrumental
Audio
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Mode : Joint stereo
Mode extension : MS Stereo
Duration : 5mn 6s
Bit rate mode : Constant
Bit rate : 128 Kbps
Channel(s) : 2 channels
Sampling rate : 44.1 KHz
Compression mode : Lossy
Stream size : 4.67 MiB (100%)
它是MPEG音频压缩文件,这就是为什么你不能使用"audio/pcm"
编解码器来播放它,我将你的音频文件解压缩成PCM,并且你的代码能够正确播放它。以下是的MediaInfo我的文件输出:
Format : Wave
File size : 51.6 MiB
Duration : 5mn 6s
Overall bit rate mode : Constant
Overall bit rate : 1 411 Kbps
Audio
Format : PCM
Format settings, Endianness : Little
Format settings, Sign : Signed
Codec ID : 1
Duration : 5mn 6s
Bit rate mode : Constant
Bit rate : 1 411.2 Kbps
Channel(s) : 2 channels
Sampling rate : 44.1 KHz
Bit depth : 16 bits
Stream size : 51.6 MiB (100%)
如果你需要播放压缩音频格式,可以考虑使用QMediaPlayer
,看看here。
非常感谢。这个程序我也无法播放flac。你也可以介绍一下吗?欢迎来到 –
,[FLAC Audio](https://en.wikipedia。org/wiki/FLAC)是用于无损压缩**音频的另一种编解码器,所以可以用来播放未压缩的PCM音频的解压缩和播放FLAC。再次考虑使用'QMediaPlayer'。 – Mike
再次非常感谢。我也打算从usb图像采集卡接收音频并进行播放。你对此有什么建议? –
到wav文件的链接会很棒。 –
我该怎么做? @ Jean-FrançoisFabre –
我承认将不得不链接到像Dropbox这样的外部链接 –