2012-12-13 1 views
3

다른 시간에 다른 소리를 재생하려고합니다. 버튼 누름 또는 타이머 시간 초과 등을 기반으로합니다. 다음은 코드입니다.AudioQueue에 대한 XCODE AVAudioPlayer 오류 : 트림 요청 0 + 1676 = 1152 프레임을 포함하는 버퍼에서 1676 프레임

if([myAudio isPlaying]){ 
     [myAudio stop]; 
     myAudio.currentTime = 0; 
    } 

문제 :

-(void)myPlaySound:(NSString *)mySoundFile NumberOfLoops:(int)loopsCount ofType:(NSString *)fileType 
{ 


NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
              pathForResource:mySoundFile 
              ofType:fileType]]; 

myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 

myAudio.volume = audioVolume; 

myAudio.delegate = self; 

myAudio.numberOfLoops = loopsCount; 
[myAudio prepareToPlay]; 
[myAudio play]; 

} 

사운드를 중지 : 때때로 나는이 오류가 발생합니다 : AudioQueue : 0 + 1676 = 1676 개 프레임을 트림 요청을

사운드 기능을 재생하려면 0122 프레임을 포함하는 버퍼에서

[myAudio play]가 호출되는 즉시 오류가 발생합니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

+0

가능성은 당신의 'myPlaySound'

myAudio.numberOfLoops = loopsCount; [myAudio prepareToPlay]; [myAudio play]; 

로 변경합니다? 다른 인스턴스를 할당하기 전에 플레이어를 시도하고 중지해야합니다. –

+1

플레이어가 호출되는 동안 내 메서드를 호출하고 있다고 생각하지 않습니다. BTW, 내가 [기존의 자리에] 다른 소리 파일을로드하려고하면이 오류가 발생하지 않습니다. 오디오 파일의 비트율이 다르기 때문에이 문제가 발생할 수 있습니다. – user1771823

답변

3

나는이 문제가되었다 라두 말한 것처럼, 나는 그것이 이미 연주하는 동안 사운드를 재생하려고했다 가진 것 같았다 문제. 사운드가 다른 사운드로 대체되면 큰 문제는 아니지만 이미 재생되는 동안 동일한 사운드를 재생하려고하지 않는다는 점에주의하십시오.

3

조금 늦게 물어 봤지만 문제가 해결되지 않았다면 도움이 될 것입니다. 연주하기 전에 myAudio를 중지하면

myAudio 당신은 문제를 제거 할 수있다.

그래서 당신은 여기서 잠시 오디오 재생 호출되는

[myAudio stop]; 
    myAudio.numberOfLoops = loopsCount; 
    [myAudio prepareToPlay]; 
    [myAudio play]; 
관련 문제