Pergunta

Eu inicializo uma instância de 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 */

Alguém sabe por que o Avaudioplayer não está respondendo? Existe algo que estou negligenciando enquanto inicializa, interpretando o Audioplayer? Código de caldeira talvez?

Estou executando isso no simulador do iPhone. Além disso, o AudiosServicesPlaySystemSound () funciona para o mesmo arquivo, o que é intrigante, mas isso indica que a reprodução sonora também pode funcionar com a Avaudioplayer.

Foi útil?

Solução

Eu tenho 2 sugestões rápidas:

  1. Verifique se esse caminho realmente fornece dados. Aloc um objeto NSDATA usando [[nsdata aloc] initWithContentsOffile: Path] e inspecione -o no depurador para ver se você está realmente carregando esse arquivo WAV.

  2. Eu escrevi um projeto de amostra que usa Avaudioplayer aqui: Exemplo de Avaudioplayer. Como o código é praticamente o mesmo que o seu, a única coisa que posso imaginar é que há um problema com seus dados.

Confira isso e veja se isso o leva a algum lugar!

Outras dicas

Acabei de ter um problema semelhante. Não tenho certeza se é a mesma solução, mas meu aplicativo registra áudio através do iPhone e depois a reproduz de volta ao usuário.

Eu pensei que estava fazendo a coisa correta dizendo à minha sessão de áudio que ela iria gravar dados, então eu fiz o seguinte:

[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

Usando essa reprodução de configuração funcionou no simulador, mas não no dispositivo ... o evento Didfinishishing nunca foi aumentado.

Eu removi essa linha depois de perceber que não precisava de uma reprodução de áudio começou a funcionar corretamente. Agora eu só preciso descobrir por que está tão quieto :)

Paulo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top