안녕하세요, 실시간 음성 변경을위한 응용 프로그램을 만들려고합니다. 첫 번째 단계에서 나는 지정된 파일에 audiodata를 기록하고 녹음 한 후에 재생할 수있었습니다. 이제 루프에서 녹음 한 직후에 오디오 버퍼를 재생하기위한 코드를 변경하려고합니다. 내 질문은 어떻게 녹음 오디오 큐에서 직접 Audiodata를 읽을 수 있으며 (문서에 표시된 것처럼) 파일에서 읽지 못하는 것입니다. Iam은 어떤 아이디어에 감사 드리며 필요한 경우 코드 파트를 보여줄 수 있습니다. 미리 감사드립니다. 루카스 (독일에서)Realtime AudioQueue Record-Playback
2
A
답변
1
SpeakHere 예를 살펴보십시오.
OSStatus result = AudioFileReadPackets(THIS->GetAudioFileID(), false, &numBytes, inCompleteAQBuffer->mPacketDescriptions, THIS->GetCurrentPacket(), &nPackets,
inCompleteAQBuffer->mAudioData);
그래서, AudioFileReadPackets
를 호출하는 대신, 당신은 단지 기록 된 데이터 버퍼를 복사하기 위해 방어 적이기을 사용할 수 있습니다 :이 줄은 오디오 데이터를 소싱. 또는, 재생에 오디오 데이터 버퍼에 대한 포인터 AudioQueue
을 제공하십시오. 재생이 계속되면 버퍼를 통해 mCurrentPacket
포인터를 전진시킵니다.
녹음하려면 아주 비슷한 작업을 수행하십시오. 파일에 쓰는 대신 메모리의 버퍼에 기록합니다. 먼저 malloc
으로 할당해야합니다. 그런 다음 수신 된 AudioQueue
이 기록 된 데이터를 캡처합니까? 해당 데이터를 버퍼에 복사합니다. 더 많은 데이터가 복사되면 레코딩 헤드 또는 mCurrentPacket
을 새로운 위치로 이동합니다.
사용하려는 플랫폼/언어는 무엇입니까? (귀하의 질문에서 말씀하기가 어렵습니다.) –
programm는 아이폰에서 작동하기위한 것입니다. 사용 된 언어는 Objective-C입니다. 지금까지 대부분의 코드는 AudioQueue Reference Guide에서 가져 왔습니다. – Lukas
질문에 의미가있는 태그로 태그를 다시 지정했습니다. 이제는 더 많은 답변을 얻으실 수 있습니다. –