didOutputSampleBuffer
대리인의 원시 데이터로 수신 된 오디오를 재생하려고했습니다. 원시 데이터를 처리하는 올바른 방법은 무엇입니까? 애플의 다음 샘플 코드에서`didOutputSampleBuffer`에서`AVCapturesession`을 사용하여 오디오 버퍼를 재생하는 방법
2
A
답변
1
제대로 원시 오디오 데이터를 처리하고 AudioUnit
에 전달하는 방법을 볼 수 있습니다. 다음과 같이
기본 원칙은 다음과 같습니다
이
먼저 얻는 형식에
SampleBuffer
의AudioStreamBasicDescription
정보를 얻기CMFormatDescriptionRef
CMSampleBufferGetFormatDescription
와
그러면 얻을AudioStreamBasicDescription
와CMAudioFormatDescriptionGetStreamBasicDescription
이제 샘플 속도, 채널당 비트 수, 프레임 당 채널 수에 대한 정보를 얻을 수 있습니다. 패킷당 프레임이 실제 오디오 데이터
로AudioBufferList
를 얻을 하나의 CoreAudio의 공공 유틸리티를 사용하거나 너무
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer
호출되는 기능을 수행하는 올바른 방법이 mailing list 항목을 선택합니다. 세 번째 매개 변수는bufferListOut
이며AudioBufferList
입니다. 예를 들어 다음과 같이 작업 할 수 있습니다. AudioUnit 또는 무엇이 필요합니다.얻기 실제 원시 데이터
는AudioBufferList
각각의AudioBuffers
이 포함 된이 당신이 가야한다 데이터struct AudioBuffer { UInt32 mNumberChannels; UInt32 mDataByteSize; void *mData; };
가 포함되어 있습니다. 자세한 정보는 Apple의 샘플 코드를보십시오.