문제

avaudioplayer 인스턴스를 초기화합니다.

NSString* path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"wav"];

AVAudioPlayer* player =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; //Returned object not nil, indicating that the file has loaded successfully


BOOL b = [player prepareToPlay]; //returns TRUE

BOOL b2 = [player play]; 
//returns TRUE, goes immediately to the next line since asynchronous


[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]; //wait 1 sec

printf("%10.4f\n",player.duration); //duration is 2s

printf("%10.4f\n",player.currentTime); //position remains 0

/* There is no sound output, player is also stuck since position==0 */

Avaudioplayer가 왜 응답하지 않는지 아는 사람이 있습니까? 초기화하는 동안 간과하고있는 것이 있습니까? 보일러 플레이트 코드 어쩌면?

iPhone 시뮬레이터에서 이것을 실행하고 있습니다. 또한 AudioservicesPlaySyStemsound ()는 수수께끼가 동일한 파일에 대해 작동하지만 사운드 재생이 AvaudioPlayer 와도 작동 할 수 있음을 나타냅니다.

도움이 되었습니까?

해결책

두 가지 빠른 제안이 있습니다.

  1. 해당 경로가 실제로 데이터를 제공하는지 확인하십시오. [[nsdata alloc] initwithContentSoffile : path]를 사용하여 nsdata 객체를 Alloc으로 디버거에서 검사하여 실제로 WAV 파일을로드하고 있는지 확인하십시오.

  2. 나는 여기에 avaudioplayer를 사용하는 샘플 프로젝트를 썼습니다. avaudioplayer 예. 코드는 귀하와 거의 동일하기 때문에, 내가 상상할 수있는 유일한 것은 데이터에 문제가 있다는 것입니다.

그것들을 확인하고 그것이 당신을 어디든 데려 오는지 확인하십시오!

다른 팁

방금 비슷한 문제가있었습니다. 그것이 동일한 솔루션인지 확실하지 않지만 응용 프로그램은 iPhone을 통해 오디오를 녹음 한 다음 사용자에게 다시 재생합니다.

오디오 세션에 데이터를 녹화 할 것이라고 말함으로써 올바른 일을하고 있다고 생각했습니다.

[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

이 설정을 사용하는 것은 시뮬레이터에서 작동했지만 장치에서는 작동하지 않았습니다 .... DidfinishPlaying 이벤트는 결코 제기되지 않았습니다.

오디오 재생이 제대로 작동하기 시작하지 않았다는 사실을 깨닫고이 라인을 제거했습니다. 이제 나는 그것이 왜 그렇게 조용한 지 알아 내야합니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top