美文网首页
设置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