我正在尝试使用 AVPlayer 从我的 iPhone 音乐库中播放一首歌曲。一切似乎都可以播放了,但播放器根本不会发出任何声音。我已经为此苦苦挣扎了一段时间,任何帮助将不胜感激!
注意:我意识到我可以使用 AVAudioPlayer,但我想直接从我的音乐库中读取文件,据我了解,AVAudioPlayer 不支持(我必须先导出歌曲,占用更多时间)。我不能使用 MPMusicPlayerController 因为最终目标是将歌曲转换为 NSData 并在另一台设备上播放。
最重要的是,我想知道为什么这段代码没有播放:
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");
}];
输出为“Ready to play”,我调用play方法后AVPlayer的“rate”属性为1.0。MPMediaItem 存在,我可以使用 valueForProperty 方法来获取正确的标题、艺术家等。任何想法为什么播放器没有声音?