2012-01-20 3 views
3

제 생각에 오디오 대기열 서비스는 오디오 장치를 사용하는 오디오 장치보다 높은 수준의 API입니다. OpenAL은 또한 Audio Units를 사용합니다. 따라서 오디오 단위는 iOS에서 가장 낮은 수준의 오디오 API입니다.사용자 정의 오디오 효과가 필요하거나 오디오 대기열 서비스에 의존 할 수있을 때 오디오 장치를 처리해야합니까?

소리를 녹음 한 다음 사용자 지정 필터를 오디오 스트림에 적용하고 다시 재생해야합니다. 오디오 대기열 서비스는 녹음하기에 좋으며 다시 재생할 때도 사용할 수 있습니다. 하지만 AURemoteIO 오디오 장치처럼 오디오 스트림에 자체 알고리즘을 적용 할 수 있는지 여부는 여전히 불확실합니다.

답변

5

필자의 개인적이고 때로는 고통스러운 경험을 통해 스트리밍 유형 응용 프로그램에 AudioQueue를 사용한다고 말하고 싶습니다. 그 외의 경우에는 AudioUnit을 사용하십시오. 후자가 더 낮은 수준 일 수도 있지만 복잡성에서 많은 차이를 보지 못했습니다.

AudioUnit은 작업하기가 훨씬 수월합니다.

AudioUnit을 사용하면 다른 플러그인을 사용하여 효과를 적용 할 수 있어야합니다. 그러나 iOS 5 AURemoteIO가 사용 가능한 유일한 AudioUnit 일 때까지. iOS 5에는 더 많은 것이 있습니다. 아직 확인할 기회가 없었습니다.

버퍼에 대해 알고리즘을 실행하여 수동으로 수행하는 경우 상당히 많은 오픈 소스 DSP 코드를 찾을 수 있어야합니다. 상업용 앱도 있습니다. 정말 좋은 라이브러리는 피치 시프 팅과 타임 스트레칭을위한 Dirac DSP입니다.

여기이 다른 질문에 대한 답변에 AURemoteIO를 사용하는 방법에 대한 좋은 자습서는 다음과 같습니다

Stopping and Quickly Replaying an AudioQueue

+1

+1. 나는 AudioUnit을 아주 행복하게 사용 해왔다. 보일러 플레이트 (boilerplate) AU 셋업 코드가 완성되면 다시 볼 필요가 없습니다. 거의 모든 것이 콜백 메소드에서 발생합니다. 콜백 메소드는 완전히 제어 할 수 있습니다. –

1

압축되지 않은 오디오를 녹음하고 저장하는 경우 오디오 API를 사용하지 않고 캡처 한 오디오 버퍼 또는 파일에 직접 사용자 지정 오디오 효과를 적용 할 수 있습니다. 그런 다음 iOS 오디오 API를 사용하여 결과를 재생합니다.