美文网首页
设置kExtAudioFileProperty报错问题处理

设置kExtAudioFileProperty报错问题处理

作者: cd59f729e81e | 来源:发表于2017-07-18 11:35 被阅读42次

设置kExtAudioFileProperty_ClientDataFormat报错时的处理

项目使用到ExtAudioConverter这样一个第三方库去将录音的mp3文件转成wav来做语音识别,但是后来莫名其妙在设置kExtAudioFileProperty时报错,原先的写法是这样,有兴趣可以去找这个库去看看:

ExtAudioFileSetProperty(settings.outputFile,kExtAudioFileProperty_ClientDataFormat,sizeof(desc), &settings.inputPCMFormat);

CheckError(ExtAudioFileSetProperty(settings.inputFile,

kExtAudioFileProperty_ClientDataFormat,

sizeof(settings.inputPCMFormat),

&settings.inputPCMFormat),

"Setting client data format of input file failed");

//If the file has a client data format, then the audio data in ioData is translated from the client format to the file data format, via theExtAudioFile's internal AudioConverter.

if(settings.outputFormat.mFormatID!=kAudioFormatMPEGLayer3) {

CheckError(ExtAudioFileSetProperty(settings.outputFile,

kExtAudioFileProperty_ClientDataFormat,

sizeof(settings.inputPCMFormat),

&settings.inputPCMFormat),

"Setting client data format of output file failed");

}

下方解决方法是借鉴别人的,原地址是https://my.oschina.net/vimfung/blog/290662,至于为什么,我还得研究研究,哈哈。

指定ExtAudioFile的编码器为软件编码器即可。如:

// 先设置编码器UInt32codec = kAppleSoftwareAudioCodecManufacturer;ExtAudioFileSetProperty(fileRef, kExtAudioFileProperty_CodecManufacturer,sizeof(codec), &codec);

//再设置格式AudioStreamBasicDescription desc;

ExtAudioFileSetProperty(fileRef, kExtAudioFileProperty_ClientDataFormat,sizeof(desc), &desc);

相关文章

网友评论

      本文标题:设置kExtAudioFileProperty报错问题处理

      本文链接:https://www.haomeiwen.com/subject/clnckxtx.html