AVPlayerを使用して自分のiPhoneミュージックライブラリから曲を再生しようとしています。すべてが再生準備が整っているように見えますが、プレイヤーは単に音を出すことはありません。私はしばらくの間これに苦労してきた、どんな助けも大いに評価されるだろう!AVPlayerが音楽ライブラリから再生しない
注:私は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");
}];
出力は「プレーする準備ができました」であり、「率」AVPlayerのプロパティは、私が呼び出した後1.0:何より
、私はこのコードが再生されていない理由を知りたいです再生方法MPMediaItemが存在し、valueForPropertyメソッドを使用して正しいタイトル、アーティストなどを取得することができます。プレイヤーからサウンドが聞こえない理由は何ですか?働いていた何かが見つかり
「NSArray * keyArray」の直後のように、AVPlayerとAVPlayerItemをブロック外で宣言しようとしましたか? – meggar
しました。それらを宣言して外部に初期化しても違いはありません。それらを外部に宣言してハンドラ内で初期化することは、明らかに禁止されています。しかし、アイデアをありがとう! – JohnG