O AVPlayer não está tocando na biblioteca de músicas
Estou tentando reproduzir uma música da minha biblioteca de músicas do iPhone usando o AVPlayer. Tudo parece pronto para jogar, mas o jogador simplesmente não faz nenhum som. Eu tenho lutado com isso por um tempo, qualquer ajuda seria muito apreciada!
Nota: Eu percebi que poderia usar o AVAudioPlayer, mas gostaria de ler o arquivo diretamente da minha biblioteca e, no meu entender, o AVAudioPlayer não suporta isso (eu teria que exportar a música primeiro, ocupando mais tempo). Eu não posso usar MPMusicPlayerController porque o objetivo final é transformar a música em NSData e reproduzi-lo em outro dispositivo.
Acima de tudo, gostaria de saber por que este código não está sendo reproduzido:
NSArray *itemsFromQuery = [[MPMediaQuery songsQuery] items];
MPMediaItem *song = [itemsFromQuery objectAtIndex:29];
NSURL *songURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset *urlAsset = [[AVURLAsset alloc] initWithURL:songURL options:nil];
NSArray *keyArray = [[NSArray alloc] initWithObjects:@"tracks", nil];
[urlAsset loadValuesAsynchronouslyForKeys:keyArray completionHandler:^{
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:urlAsset];
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
while (true) {
if (player.status == AVPlayerStatusReadyToPlay && playerItem.status == AVPlayerItemStatusReadyToPlay) {
break;
}
}
if (player.status == AVPlayerStatusReadyToPlay && playerItem.status == AVPlayerItemStatusReadyToPlay) {
NSLog(@"Ready to play");
[player play];
}
else
NSLog(@"Not ready to play");
}];
A saída é "Pronto para jogar", e a propriedade "rate" do AVPlayer é 1.0 depois que eu chamo o método play. O MPMediaItem existe, e eu posso usar o método valueForProperty para obter o título correto, artista, etc. Alguma idéia de por que nenhum som está vindo do player?