2011-01-09 4 views
2

안녕하세요, 실시간 음성 변경을위한 응용 프로그램을 만들려고합니다. 첫 번째 단계에서 나는 지정된 파일에 audiodata를 기록하고 녹음 한 후에 재생할 수있었습니다. 이제 루프에서 녹음 한 직후에 오디오 버퍼를 재생하기위한 코드를 변경하려고합니다. 내 질문은 어떻게 녹음 오디오 큐에서 직접 Audiodata를 읽을 수 있으며 (문서에 표시된 것처럼) 파일에서 읽지 못하는 것입니다. Iam은 어떤 아이디어에 감사 드리며 필요한 경우 코드 파트를 보여줄 수 있습니다. 미리 감사드립니다. 루카스 (독일에서)Realtime AudioQueue Record-Playback

+0

사용하려는 플랫폼/언어는 무엇입니까? (귀하의 질문에서 말씀하기가 어렵습니다.) –

+0

programm는 아이폰에서 작동하기위한 것입니다. 사용 된 언어는 Objective-C입니다. 지금까지 대부분의 코드는 AudioQueue Reference Guide에서 가져 왔습니다. – Lukas

+0

질문에 의미가있는 태그로 태그를 다시 지정했습니다. 이제는 더 많은 답변을 얻으실 수 있습니다. –

답변

1

SpeakHere 예를 살펴보십시오.

OSStatus result = AudioFileReadPackets(THIS->GetAudioFileID(), false, &numBytes,  inCompleteAQBuffer->mPacketDescriptions, THIS->GetCurrentPacket(), &nPackets, 
             inCompleteAQBuffer->mAudioData); 

그래서, AudioFileReadPackets를 호출하는 대신, 당신은 단지 기록 된 데이터 버퍼를 복사하기 위해 방어 적이기을 사용할 수 있습니다 :이 줄은 오디오 데이터를 소싱. 또는, 재생에 오디오 데이터 버퍼에 대한 포인터 AudioQueue을 제공하십시오. 재생이 계속되면 버퍼를 통해 mCurrentPacket 포인터를 전진시킵니다.

녹음하려면 아주 비슷한 작업을 수행하십시오. 파일에 쓰는 대신 메모리의 버퍼에 기록합니다. 먼저 malloc으로 할당해야합니다. 그런 다음 수신 된 AudioQueue이 기록 된 데이터를 캡처합니까? 해당 데이터를 버퍼에 복사합니다. 더 많은 데이터가 복사되면 레코딩 헤드 또는 mCurrentPacket을 새로운 위치로 이동합니다.