MrD*_*ase 3 audio audiounit ios
我想在通往iOS设备扬声器的途中"拦截"音频数据.我相信这可以使用remoteIO音频单元和回调来完成.在下面的playbackCallback中,ioData实际上是否包含任何音频数据?
static OSStatus playbackCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) { ... }
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为关于ioData的日志信息似乎暗示它包含音频数据......
// if (ioData->mNumberBuffers > 0)
AudioBuffer buffer = ioData->mBuffers[0];
NSLog(@"buffer.mNumberChannels: %ld", buffer.mNumberChannels); // prints 2
NSLog(@"buffer.mDataByteSize : %ld", buffer.mDataByteSize); // prints 4096
Run Code Online (Sandbox Code Playgroud)
但是,从ioData的内容创建CMSampleBufferRef并使用AVAssetWriter将其写入CoreAudioFile会产生静默文件.输出文件的长度似乎很好(几秒钟),但是在Audacity中打开文件会显示一条平面线.
在阅读了大量的SO帖子并尝试了大量的remoteIO音频单元示例代码后,我开始怀疑上面的ioData是否包含应该在playbackCallback中填充的预先调整大小的空缓冲区.
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |