Android OpenSLES 缓冲队列上的声音故障
Sound glitch on Android OpenSLES buffered queue
我已经按照此处的示例实现了一个 OpenSLES 缓冲队列:https://github.com/googlesamples/android-ndk/blob/master/native-audio/app/src/main/cpp/native-audio-jni.c
然而,当我将我的声音加入队列并(隐含地)播放时,我可以在声音开始时听到一个故障:
(*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize);
(文件)示例中不存在此故障。
如果我将样本排入队列两次,我可以听到两次这个故障。
样本使用 Audacity 编码为 44kHz 的单声道 .wav
实际上,.wav 格式并不意味着原始格式,因此文件以 header 开头。这就是一开始产生故障的原因。
使用 Audacity,导出为 "Other uncompressed format" > "RAW (header-less)"、"Signed 16-bit PCM" 解决了问题。
我已经按照此处的示例实现了一个 OpenSLES 缓冲队列:https://github.com/googlesamples/android-ndk/blob/master/native-audio/app/src/main/cpp/native-audio-jni.c
然而,当我将我的声音加入队列并(隐含地)播放时,我可以在声音开始时听到一个故障:
(*bqPlayerBufferQueue)->Enqueue(bqPlayerBufferQueue, nextBuffer, nextSize);
(文件)示例中不存在此故障。
如果我将样本排入队列两次,我可以听到两次这个故障。
样本使用 Audacity 编码为 44kHz 的单声道 .wav
实际上,.wav 格式并不意味着原始格式,因此文件以 header 开头。这就是一开始产生故障的原因。
使用 Audacity,导出为 "Other uncompressed format" > "RAW (header-less)"、"Signed 16-bit PCM" 解决了问题。