我正在从包含编码 PCM 缓冲区的套接字接收一系列 UDP 数据包。解码后,我留下了一个 int16 * 音频缓冲区,我想立即播放。
预期的逻辑是这样的:
init(){
initTrack(track, output, channels, sample_rate, ...);
}
onReceiveBufferFromSocket(NSData data){
//Decode the buffer
int16 * buf = handle_data(data);
//Play data
write_to_track(track, buf, length_of_buf, etc);
}
不过,我不确定与播放缓冲区有关的所有内容。在Android上,我可以通过创建一个AudioTrack对象来实现这一点,通过指定采样率、格式、通道等来设置它......然后只需使用缓冲区调用“write”方法(就像我希望的那样我可以在上面的伪代码中)但在 iOS 上我做不到。
我尝试使用音频文件流服务,但我猜我做错了,因为没有声音出现,而且我觉得这些功能本身实际上并没有进行任何播放。我还尝试了解音频队列服务(我认为它可能接近我想要的),但是我找不到任何简单的代码示例来使用它。
任何帮助将不胜感激,特别是以示例代码的形式。