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