저는 스트리밍 어플리케이션의 초보자입니다. AudioBuffer에서 NSdata를 만들고 클라이언트 (수신자)에게 nsdata를 보내고 있습니다. 하지만 NSdata를 오디오 버퍼로 변환하는 방법을 모르겠습니다.NSdata에서 AudioBuffer/Audio를 생성하는 방법
(이 잘 작동하고) 나는있는 NSData로 오디오 버퍼를 변환하려면 다음 코드를 사용하고- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
AudioStreamBasicDescription audioFormat;
memset(&audioFormat, 0, sizeof(audioFormat));
audioFormat.mSampleRate = 8000.0;
audioFormat.mFormatID = kAudioFormatiLBC;
audioFormat.mFormatFlags = kAudioFormatFlagIsBigEndian | kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked | kAudioFormatFlagIsAlignedHigh;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = 1;
audioFormat.mBitsPerChannel = 16;
audioFormat.mBytesPerPacket = 2;
audioFormat.mReserved = 0;
audioFormat.mBytesPerFrame = audioFormat.mBytesPerPacket = audioFormat.mChannelsPerFrame* sizeof(SInt16);
AudioBufferList audioBufferList;
NSMutableData *data=[[NSMutableData alloc] init];
CMBlockBufferRef blockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, NULL, &audioBufferList, sizeof(audioBufferList), NULL, NULL, 0, &blockBuffer);
for(int y=0; y<audioBufferList.mNumberBuffers; y++)
{
AudioBuffer audioBuffer = audioBufferList.mBuffers[y];
Float32 *frame = (Float32*)audioBuffer.mData;
[data appendBytes:frame length:audioBuffer.mDataByteSize];
}
}
이 다음 저를 도와주세요 적절한 방법이 아닌 경우 .... 감사합니다.
안녕하세요, 관리 할 수 있었습니까? 그렇다면 솔루션을 게시하십시오. 고마워, 나는 똑같은 문제로 고심하고있다. – moenad
@Sojan - 데이터를 다시 CMSampleBufferRef로 변환 할 수 있었습니까? 또는 당신을 위해 일한 약간의 자원/접근법을 안내해주십시오. –