2011-11-15 90 views
1

我想從Axis Camera獲取RTP音頻流,然後在我的Qt項目中實時播放它。Qt來自Axis Camera的音頻播放

我使用Live555來管理音頻流並使用FFMPEG對其進行解碼。當我解碼包我發出這就是我的小部件的插槽內管理與信號:

ap.ioDevice->write((const char*)ptrArr, frameSize); 

的問題是,當我聽,我的聲音,但一點點的金屬! 我設置這些參數爲QAudioOutput

format.setFrequency(22050); 
format.setChannels(1); 
format.setSampleSize(16); 
format.setCodec("audio/pcm"); 
format.setByteOrder(QAudioFormat::LittleEndian); 
format.setSampleType(QAudioFormat::UnSignedInt); 

有什麼不對?


謝謝大家。

正如我在評論中所說,我可以獲得8000Hz和2個通道足夠清晰的播放。

現在我試圖解決其他問題,比我會嘗試提高音頻質量,例如Phonon。

+0

根據[文檔](http://doc.qt.nokia.com/stable/qaudioformat-obsolete.html),'setFrequency'和'setChannels'都是過時的,僅用於傳統目的。我不確定它是你問題的根源,但最好使用'setSampleRate'和'setChannelCount'來代替。 – sjwarner

+0

好吧,我試着用setSampleRate和setChannelCount,但效果是一樣的。我設置了8000和2個頻道,現在效果更好。我只想降低低頻率。你知道我該怎麼做嗎? – user1047400

+0

是的,雖然我不會有任何區別,但由於'setFrequency'現在被列爲過時,在將來的Qt版本中可能會完全放棄它,這意味着如果更新代碼可能會中斷:) – sjwarner

回答

0

我認爲你的問題是你的採樣率 - 22KHz似乎很低。增加到44.1K的差異有多大? (我想你還需要檢查QAudioDeviceInfo::supportedSampleRates().contains((int)SampleRate),無論你選擇什麼作爲你的SampleRate)。

+0

我並不認爲22KHz很低,實際上我的聲音很吱吱聲。我解決了將採樣率設置爲8000Hz和兩個通道。 – user1047400

+0

酷,你應該提交,作爲自我回答:) – sjwarner