AVPlayer nie odtwarza z biblioteki muzycznej
Próbuję odtworzyć utwór z mojej biblioteki muzycznej na iPhone za pomocą AVPlayer. Wszystko wydaje się gotowe do gry, ale odtwarzacz po prostu nie wyda żadnego dźwięku. Od jakiegoś czasu zmagam się z tym, każda pomoc byłaby bardzo mile widziana!
Uwaga: zdaję sobie sprawę, że mogę użyć AVAudioPlayer, ale chciałbym przeczytać plik bezpośrednio z mojej biblioteki muzycznej i, jak rozumiem, AVAudioPlayer nie obsługuje tego (musiałbym najpierw wyeksportować utwór, zajmując więcej czasu). Nie mogę używać MPMusicPlayerController, ponieważ celem końcowym jest przekształcenie utworu w NSData i odtworzenie go na innym urządzeniu.
Przede wszystkim chciałbym wiedzieć, dlaczego ten kod nie jest odtwarzany:
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");
}];
Wyjście to „Ready to play”, a właściwość „rate” AVPlayera wynosi 1,0 po wywołaniu metody odtwarzania. Istnieje MPMediaItem i mogę użyć metody valueForProperty, aby uzyskać prawidłowy tytuł, wykonawcę itp. Jakieś pomysły, dlaczego z odtwarzacza nie dochodzi dźwięk?