AudioUnit播放PCM问题

AudioUnit播放音频数据:

是通过一个回调来取音频数据,然后拿送入的数据进行播放。
放入的数据过多,会导致播放速率变快,反之亦然。
那么如何才能以标准速度播放呢。

经过测试iOS与Mac每秒的取播放数据频率是固定的。
iOS为每秒取43次。
Mac为每秒取86次。
且不因放入参数的格式与大小而发生变化。

只要保证每次送入回调中的音频数据大小为合适的数据量那么就能够清晰播放且播放速度不发生变化。

播放的时候需要设置参数:
    format->mSampleRate         = 8000;
    format->mBitsPerChannel     = 16;
    format->mChannelsPerFrame   = 1;
    
    format->mFormatID           = kAudioFormatLinearPCM;
    format->mFormatFlags        = kAudioFormatFlagIsSignedInteger ;
    format->mFramesPerPacket    = 1;
    format->mBytesPerPacket  = 2;
    format->mBytesPerFrame    = 2;
计算
这里采样频率为8000,位数为1 且为单通道。
那么每秒钟需要播放的数据就是8000*16bit = 16000Byte;
在iOS平台下,每次送入的数据量就应该是:
16000Byte/43 = 372;
在Mac平台下,每次送入的数据量就应该是:
16000Byte/86 = 186;

只要每次都送入大小为上表中的数据量,就能够流畅播放。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容