【发布时间】:2011-11-15 10:58:46
【问题描述】:
我想获取来自 Axis 相机的 RTP 音频流,然后在我的 Qt 项目中实时播放。
我使用 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。
【问题讨论】:
-
根据the docs,
setFrequency和setChannels都已过时,仅用于遗留用途。我不确定这是您问题的根源,但最好使用setSampleRate和setChannelCount代替。 -
好的,我尝试使用 setSampleRate 和 setChannelCount 但效果是一样的。我将它设置为 8000 和 2 个通道,现在效果更好。我只想降低低频。你知道我该怎么做吗?
-
是的,虽然会有区别,但我不会有,但由于
setFrequency现在被列为过时,它有可能在未来的 Qt 版本中完全删除,这意味着如果你更新你的代码可能会中断:) -
关于您上面关于如何降低低频的要求。我认为你最好的选择是使用Phonon module - 特别是
Phonon::Effect