使用pulseaudio API播放wav文件?

时间:2012-08-06 00:07:11

标签: c api audio pulseaudio

例如,这是如何使用pulseaudio:http://freedesktop.org/software/pulseaudio/doxygen/pacat-simple_8c-example.html

但我不清楚如何简单地播放wav文件或ogg文件。

2 个答案:

答案 0 :(得分:1)

示例代码将播放文件中的原始PCM数据。诀窍是将wav文件中的数据转换为这种格式。 Microsoft wav文件如下所示:

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

Wav文件只存储原始PCM数据。你只需要从wav文件中删除标题并将其余部分转储到文件中(扩展名无关紧要,但我喜欢使用.raw)。也就是说,你可以编写一个程序:将字节44之后的所有内容复制到一个新文件中,或者只是将其后的所有内容直接读入缓冲区。将任一格式传递给pulseaudio示例,你应该好好去。

需要注意的事项:文件和系统的字节顺序;一位深度;频道数量。这些是在wav标题中,您可能必须阅读它们并在播放数据之前告诉pa_simple。虽然,我不确定pa_simple是否为您检测到此信息。我喜欢使用异步实现,我只是直接输入格式。

-E

答案 1 :(得分:0)

linux-commands-examples - pacat

pacat --list-file-formats

aiff    AIFF (Apple/SGI)
au  AU (Sun/NeXT)
avr AVR (Audio Visual Research)
caf CAF (Apple Core Audio File)
flac    FLAC (Free Lossless Audio Codec)
htk HTK (HMM Tool Kit)
iff IFF (Amiga IFF/SVX8/SV16)
mat MAT4 (GNU Octave 2.0 / Matlab 4.2)
mat MAT5 (GNU Octave 2.1 / Matlab 5.0)
mpc MPC (Akai MPC 2k)
oga OGG (OGG Container format)
paf PAF (Ensoniq PARIS)
pvf PVF (Portable Voice Format)
raw RAW (header-less)
rf64    RF64 (RIFF 64)
sd2 SD2 (Sound Designer II)
sds SDS (Midi Sample Dump Standard)
sf  SF (Berkeley/IRCAM/CARL)
voc VOC (Creative Labs)
w64 W64 (SoundFoundry WAVE 64)
wav WAV (Microsoft)
wav WAV (NIST Sphere)
wav WAVEX (Microsoft)
wve WVE (Psion Series 3)
xi  XI (FastTracker 2)