Ios 将NSData从AudioBufferList加载到AVAudioPlayer

Ios 将NSData从AudioBufferList加载到AVAudioPlayer,ios,audio,avaudioplayer,audiobuffer,audiobufferlist,Ios,Audio,Avaudioplayer,Audiobuffer,Audiobufferlist,在录制音频时,我从委托方法接收AudioBufferList。我正在尝试从AudioBufferList收集数据并保存,以便将其加载到我的AVAudioPlayer中,但AVAudioPlayer出现错误,我无法播放录音。我需要能够通过AVAudioPlayer播放音频,而不需要文件,只需使用AudioBufferList即可 最初,我将录音保存到一个文件中,然后将其加载到AVAudioPlayer中,但使用此方法,我无法附加到录音中,而无需制作另一个音频文件,然后在附加后合并这两个文件。这需要

在录制音频时,我从委托方法接收AudioBufferList。我正在尝试从AudioBufferList收集数据并保存,以便将其加载到我的AVAudioPlayer中,但AVAudioPlayer出现错误,我无法播放录音。我需要能够通过AVAudioPlayer播放音频,而不需要文件,只需使用AudioBufferList即可

最初,我将录音保存到一个文件中,然后将其加载到AVAudioPlayer中,但使用此方法,我无法附加到录音中,而无需制作另一个音频文件,然后在附加后合并这两个文件。这需要花费很多时间,我仍然希望能够听到附件之间的录音。因此,现在我不保存音频文件,这样我可以一直附加到它,直到我想保存它。问题是我从AudioBufferList保存的NSData没有正确加载到AVAudioPlayer中

以下是我收集NSData的代码:

- (void)      microphone:(EZMicrophone *)microphone
       hasBufferList:(AudioBufferList *)bufferList
      withBufferSize:(UInt32)bufferSize
withNumberOfChannels:(UInt32)numberOfChannels
{
    AudioBuffer sourceBuffer = bufferList->mBuffers[0];

    if (audioBuffer.mDataByteSize != sourceBuffer.mDataByteSize)
    {
        free(audioBuffer.mData);
        audioBuffer.mDataByteSize = sourceBuffer.mDataByteSize;
        audioBuffer.mData = malloc(sourceBuffer.mDataByteSize);
    }

    int currentBuffer =0;
    int maxBuf = 800;

    for( int y=0; y< bufferList->mNumberBuffers; y++ )
    {
        if (currentBuffer < maxBuf)
        {
            AudioBuffer audioBuff = bufferList->mBuffers[y];
            Float32 *frame = (Float32*)audioBuff.mData;

            [data appendBytes:frame length:audioBuffer.mDataByteSize];
            currentBuffer += audioBuff.mDataByteSize;
        }
        else
        {
            break;
        }
    }
}
错误: 错误域=NSOSStatusErrorDomain代码=1954115647“操作无法完成。(OSStatus错误1954115647)。”

任何帮助都将不胜感激


谢谢,

该问题的可能重复涉及从现有文件收集NSData,而我从AudioBufferList收集NSData。谢谢你的回复。只是尝试了你的代码,得到了完全相同的错误。如果你发现了什么,请告诉我wrong@Miniroo到目前为止运气不好。该问题的可能重复涉及从现有文件收集NSData,而我正在从AudioBufferList收集我的数据。谢谢你的回复。只是尝试了你的代码,得到了完全相同的错误。如果你发现了什么,请告诉我wrong@Miniroo到目前为止运气不好。该问题的可能重复涉及从现有文件收集NSData,而我正在从AudioBufferList收集我的数据。谢谢你的回复。只是尝试了你的代码,得到了完全相同的错误。如果你发现了什么,请告诉我wrong@Miniroo到目前为止运气不好。
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:&err];