2011-11-15 54 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