2010-11-22 5 views
3

나는 AVAudioPlayer를 사용하여 길게 오디오 파일 (20 초 정도)을 재생하고 있습니다. 파일의 중간에서 일시 중지하고 시작할 수 있어야합니다. 오디오가 재생되는 동안 일시 중지하거나 시작하면 오디오가 시작되거나 끝날 때 눈에 띄는 "팝"이 나타납니다.일시 중지/시작 glitchy pops없이 AVAudioPlayer

나는 매우 빠른 페이드 아웃을 수행하여 상황을 개선 할 수있었습니다 (performSelector를 사용하여 볼륨을 여러 번 설정 : withObject : afterDelay 그러나 소리는 여전히이 기술 조금 glitchy입니다

..

이 고장없이 AVAudioPlayer를 일시 정지/시작하는 표준 방법이 있나요?

답변

1

가 소리를 미리로드.이됩니다 일시 정지 때 당신의 AVAudioPlayer 객체에 -prepareToPlay을 보내십시오.

이되지 않는 경우 일을하고, 페이드 아웃을 가속화하십시오. performSelector : withObject : afterDelay의 지연을 줄입니다. 미친 듯이 밀리 세컨드. 이 역시 작동하지 않는 경우

,

이 중 어느 것도 앱에서 오디오 파일이 어떻게 사용되고 있는지를 설명해주십시오 작동하는 경우 (관련이없는 배경 잡음없이) 깨끗하고 높은 품질의 오디오 파일을 사용하여 시도 더 자세하게.

+0

performSelector : withObject : afterDelay는 실행 루프에 의해 해상도가 제한적인 것처럼 보입니다. 지연이 얼마나 작은 지에 대한 한계가 있습니다. 정확히 무엇인지 기억하지 못하지만 밀리 초 범위의 지연으로 해당 방법을 사용할 수 있는지 확신 할 수 없습니다. – morgancodes

+0

당신이 할 수 있는지, 그것이 제한되면 어쨌든 허용되는 최소값을 사용하므로 차이가 없습니다. – GSchv

0

낮은 수준의 API (오디오 큐 또는 RemoteIO) 중 하나를 사용하십시오. 몇 가지 PCM 샘플에 대해 1.0에서 0.0까지 증감 계수를 부드럽게 올립니다. 자체 DSP 오디오 믹서에서 샘플 - 바이 - 샘플 게인 팩터에 대해이 인수를 사용하십시오. 재시작 할 때 0.0에서 1.0까지 경사. 선형 또는 완화/완화 반 코사인 곡선

+0

문제가 있습니다. 압축 된 파일을 재생 중이므로 PCM 데이터에 쉽게 액세스 할 수 없습니다. – morgancodes

+0

다음은 압축 파일에서 pcm 데이터를 가져 오는 데 도움이되는 몇 가지 샘플 코드입니다. http://www.cogs.susx.ac.uk/users/nc81/code.html – morgancodes