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

标签: qt ffmpeg live555


【解决方案1】:

我认为您的问题与您的采样率有关 - 22KHz 似乎非常低。将其提高到 44.1K 会有多大的不同? (我认为您还需要检查 QAudioDeviceInfo::supportedSampleRates().contains((int)SampleRate) 是否为您选择的 SampleRate)。

【讨论】:

  • 我没想到 22KHz 很低,实际上我的声音很刺耳。我解决了将采样率设置为 8000 Hz 和两个通道的问题。
  • 酷,你应该把它作为自我回答提交:)
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多