2

内でオーディオをキャプチャしAVCaptureSessionています。今、それを再生しようとしています。

私は実際には低レベルのオーディオ処理にObjectALは興味がないので、これは公正な選択だと思われるので、バッファ ポインタといくつかのフォーマット情報を取得してから、ObjectAL バッファを作成しようとしました。

 -(void)captureOutput:(AVCaptureOutput*) captureOutput
didOutputSampleBuffer:(CMSampleBufferRef) sampleBuffer
       fromConnection:(AVCaptureConnection*) connection
{
    if ([captureOutput isKindOfClass:[AVCaptureAudioDataOutput class]])
    {

        // Get samples.
        CMBlockBufferRef audioBuffer = CMSampleBufferGetDataBuffer(sampleBuffer);
        size_t lengthAtOffset;
        size_t totalLength;
        char *samples;
        CMBlockBufferGetDataPointer(audioBuffer, 0, &lengthAtOffset, &totalLength, &samples);

        // Get format.
        CMAudioFormatDescriptionRef format = CMSampleBufferGetFormatDescription(sampleBuffer);
        const AudioStreamBasicDescription *description = CMAudioFormatDescriptionGetStreamBasicDescription(format);

        ALBuffer *openALbuffer = [ALBuffer bufferWithName:@"buffer just captured before"
                                                     data:sampleBuffer
                                                     size:totalLength
                                                   format:description->mFormatID
                                                frequency:description->mSampleRate];
    }
}

それは言いますInvalid Value

OAL Error: +[ALWrapper bufferDataStatic:format:data:size:frequency:]: Invalid Value (error code 0x0000a003)

ObjectAL は実際には、私が理解できなかったいくつかの OpenAL のものにフックしますALBuffer.mALWrapper.m

このような ObjectAL (OpenAL) バッファーを作成する前に、使用する必要があるフォーマット/バッファーの会話はありますか?

4

0 に答える 0