AVPlayerを使用してiPhoneミュージックライブラリから曲を再生しようとしています。すべてを再生する準備ができているように見えますが、プレーヤーは単に音を出さないでしょう。私はしばらくこれに苦労してきました、どんな助けでも大歓迎です!
注:AVAudioPlayerを使用できることはわかっていますが、音楽ライブラリからファイルを直接読みたいのですが、私の理解では、AVAudioPlayerはそれをサポートしていません(最初に曲をエクスポートする必要があり、時間がかかります)。最終目標は曲をNSDataに変換し、別のデバイスで再生することであるため、MPMusicPlayerControllerを使用できません。
とりわけ、このコードが再生されない理由を知りたいです。
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");
}];
出力は「Readytoplay」で、playメソッドを呼び出した後のAVPlayerの「rate」プロパティは1.0です。MPMediaItemが存在し、valueForPropertyメソッドを使用して、正しいタイトルやアーティストなどを取得できます。プレーヤーから音が出ない理由はありますか?