大佬教程收集整理的这篇文章主要介绍了iOS AudioUnit设置将麦克风输入保存到原始PCM文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为了测试输入/输出结果,我正在测试录音和放大器.在同一设备上播放
– 将麦克风音频数据存储在recordingCallBACk的缓冲区中
– 从playBACkCallBACk中的缓冲区播放数据
这按预期工作,语音质量很好.
我需要将传入的音频数据从麦克风保存到原始PCM文件中.
所以我的问题是:
我需要什么音频设置,我可以在生成的原始PCM文件中听到我的声音(真实的音频信号)而不是短的哔声?
有谁知道什么可能是错的或我必须做什么,我能够正确地重播生成的PCM文件?
我目前的格式设置是(C#代码):
int framesPerPacket = 1; int chAnnelsPerFrame = 1; int bitsPerChAnnel = 16; int bytesPerFrame = bitsPerChAnnel / 8 * chAnnelsPerFrame; int bytesPerPacket = bytesPerFrame * framesPerPacket; AudioStreamBasicDescription audioFormat = new AudioStreamBasicDescription () { SampleRate = 8000,Format = AudioFormatType.LinearPCM,FormatFlags = AudioFormatFlags.LinearPCMIsSignedInteger | AudioFormatFlags.LinearPCMIsPacked | AudioFormatFlags.LinearPCMIsAlignedHigh,BitsPerChAnnel = bitsPerChAnnel,ChAnnelsPerFrame = chAnnelsPerFrame,BytesPerFrame = bytesPerFrame,FramesPerPacket = framesPerPacket,BytesPerPacket = bytesPerPacket,Reserved = 0 };
额外的C#设置(这里没有错误检查):
AVAudioSession session = AVAudioSession.SharedInstance(); NSError error = null; session.SetCategory(AVAudioSession.CategoryPlayAndRecord,out error); session.SetPreferredioBufferDuration(Config.packetLength,out error); session.SetPreferredSampleRate(Format.samplingRate,out error); session.SetActive(true,out error);
OSStatus NotSoAmazingAudioENGIne::recordingCallBACk(void *inRefCon,AudioUnitRenderActionFlags *ioActionFlags,const Audiotimestamp *intimestamp,UInt32 inBusnumber,UInt32 innumberFrames,AudioBufferList *ioData) { std::pair<BufferData*,int> bufferInfo = _sendBuffer.getNextEmptyBufferList(); AudioBufferList* bufferList = new AudioBufferList(); bufferList->mnumberBuffers = 1; bufferList->mBuffers[0].mData = NULL; OSStatus status = AudioUnitRender(_instance->_audioUnit,ioActionFlags,intimestamp,inBusnumber,innumberFrames,bufferList); if(_instance->checkStatus(status)) { if(fout != NULL) //fout is a "FILE*" { fwrite(bufferList->mBuffers[0].mData,sizeof(short),bufferList->mBuffers[0].mDataByteSize/sizeof(short),fout); } } delete bufferList; return noErr;
}
背景信息为什么我需要原始PCM文件:
以上是大佬教程为你收集整理的iOS AudioUnit设置将麦克风输入保存到原始PCM文件全部内容,希望文章能够帮你解决iOS AudioUnit设置将麦克风输入保存到原始PCM文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。