gpt4 book ai didi

ios - 使用蓝牙耳机锁定设备时无法播放 AVAsset

转载 作者:行者123 更新时间:2023-11-29 02:59:22 24 4
gpt4 key购买 nike

我有一个适用于 iOS6 及更高版本的音乐播放器应用程序。我的音乐播放器工作正常,它可以在线(流媒体)和离线(本地 mp3 文件)播放音乐。

当我将蓝牙耳机连接到我的设备(iPad 或 iPhone)时出现问题,如果设备已解锁,它可以正常工作,但当设备被锁定时,音乐会继续播放,直到歌曲结束,然后当它尝试播放下一首时未播放的歌曲。经过一些调试后,我意识到问题只是出在本地文件上,而且该文件似乎无法“播放”,但实际上是因为在解锁设备的情况下它可以正常工作。

我的代码:

    NSURL *URL = [[NSURL alloc] initFileURLWithPath:path];
AVAsset *asset = [AVURLAsset URLAssetWithURL:URL options:nil];
if(asset.isPlayable) {
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
_player = [AVPlayer playerWithPlayerItem:anItem];
if(![self isPlaying]) {
[self play];
}
}

“if(asset.isPlayable) {”中的代码永远不会执行。

更新:

我已经根据@MDB983 的建议更改了我的代码,但它仍然不起作用。

        NSURL *URL = [[NSURL alloc] initFileURLWithPath:path];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithURL:URL];
if(_player == nil) {
_player = [AVPlayer playerWithPlayerItem:anItem];
} else {
[_player replaceCurrentItemWithPlayerItem:anItem];
}
if(![self isPlaying]) {
[self play];
}

有什么想法吗?

最佳答案

您是否正在设置“MPNowPlayingInfoCenter 的 nowPlayingInfo”?

我在通过 AVPlayer 播放流媒体文件时发现了同样的问题。文件一完成,在显示锁定屏幕时就不会播放下一个文件。解决方案是填充 MPNowPlayingInfoCenter 的 nowPlayingInfo;在播放新轨道之前尝试添加这样的东西来设置它;

   UIImage *artworkImage = [UIImage imageWithName:@"artworkImage.jpg"];
MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc]initWithImage:artworkImage];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"My Song Title", MPMediaItemPropertyTitle,
@"Artist Name", MPMediaItemPropertyArtist,
artwork, MPMediaItemPropertyArtwork,
1.0f, MPNowPlayingInfoPropertyPlaybackRate, nil];

我遇到的另一个问题是,AVPlayer 必须在显示锁定屏幕之前实例化,因此您应该修改您的方法并将 AVPlayer 创建为属性,并在每次歌曲更改时设置一个新的 AVPlayerItem,如下所示;

     AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
[self.player replaceCurrentItemWithPlayerItem:anItem];

关于ios - 使用蓝牙耳机锁定设备时无法播放 AVAsset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23472789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com