2016-08-12 53 views
-1

在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(); 
} 

輸出:

enter image description here

+1

到wav文件的鏈接會很棒。 –

+0

我該怎麼做? @ Jean-FrançoisFabre –

+0

我承認將不得不鏈接到像Dropbox這樣的外部鏈接 –

回答

4

您的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

+0

非常感謝。這個程序我也無法播放flac。你也可以介紹一下嗎?歡迎來到 –

+0

,[FLAC Audio](https://en.wikipedia。org/wiki/FLAC)是用於無損壓縮**音頻的另一種編解碼器,所以可以用來播放未壓縮的PCM音頻的解壓縮和播放FLAC。再次考慮使用'QMediaPlayer'。 – Mike

+0

再次非常感謝。我也打算從usb圖像採集卡接收音頻並進行播放。你對此有什麼建議? –