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?

questionAnswers(2)

yourAnswerToTheQuestion