跨平台的免费音频库,用于原始PCM数据?

4
我正在编写一个跨平台的基于Qt的程序,需要定期播放外部(我无法控制)提供的原始PCM音频。确切的格式是各种常见采样率的16位小端PCM。
我的第一个明显想法是使用Qt自己的Phonon进行音频播放,但是这种方法有两个问题:
1. 就我所看到的,Phonon不支持无头PCM数据。每次开始播放时,我必须绕过这个问题并伪造一个WAV头文件。虽然不是致命问题。
2. 更重要的是:似乎没有任何方法可以控制Phonon(以及其后端,如xine、PulseAudio、DirectX等)的预缓冲方式。它的默认行为似乎是预缓冲5秒钟,这对我来说太长了。我希望大约1秒钟,并且我肯定想能够控制它!
我目前正在研究Gstreamer、FFMPEG和libvlc。你有什么想法吗?由于我的音频格式非常简单,我不需要做复杂的混音处理(只需要音量控制),因此我希望使用一个简单、免费(自由)、跨平台且广泛可用的库。
3个回答

6

谢谢!QAudioOutput正是我正在寻找的东西!我之前没有注意到它,因为我现在使用的是Qt 4.5系统,只看了4.5文档。 - gspr

3

ffmpeg、libvlc和gstreamer具有超出原始pcm的功能,例如编解码支持。

对于您的目的,SDL(示例1示例2),OpenAL,QAudioOutput已足够。 SDL可能是最受欢迎的选项。

此外,为什么要控制缓冲区? 缓冲很多意味着中断较少,耗电量更低。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接