Ios AVAUdioPlayer-更改当前URL
在我的音频播放器应用程序中,如果我按下快进按钮,播放器必须在播放列表中找到下一首歌曲并播放。我要做的是从下一首歌中获取URL,并尝试将其放在后台(后台是AVAudioPlayer*的实例)URL字段中,但该属性是只读的。所以我实际上正在做的是——我再次调用initWithContentsOfURL方法来设置URL,如下所示:Ios AVAUdioPlayer-更改当前URL,ios,avaudioplayer,Ios,Avaudioplayer,在我的音频播放器应用程序中,如果我按下快进按钮,播放器必须在播放列表中找到下一首歌曲并播放。我要做的是从下一首歌中获取URL,并尝试将其放在后台(后台是AVAudioPlayer*的实例)URL字段中,但该属性是只读的。所以我实际上正在做的是——我再次调用initWithContentsOfURL方法来设置URL,如下所示: [self.background initWithContentsOfURL: [[_playlist.collection objectAtIndex:currentIn
[self.background initWithContentsOfURL:
[[_playlist.collection objectAtIndex:currentIndex] songURL] error:nil];
这合法吗?我的意思是,编译器告诉我表达式结果未使用,但它实际上可以工作。
还有别的方法吗?谢谢;-) 检查了4个苹果样本,他们使用AVAudioPlayer只播放一首歌曲。然而,你的结果看起来非常有趣和令人印象深刻!请让我们知道,您是否在使用相同地址重新初始化对象之前停止播放,是否正在启动新的音频会话 就我而言,我不会把播放和应用程序稳定性置于文档中未提及的风险之中,但是为了保持乐观,我会使用AVAudioPlayer类,因为它似乎是最正确的,这给了我们:
- 使用error变量跟踪可能的错误
- 停止播放AVAudioPlayer实例,初始化AVAudioPlayer的新实例,并将其设置为自动释放旧实例的属性
self.background = [self.background initWithContentsOfURL::
将为您删除警告。要播放多个URL或有效更改URL,请使用子类
AVQueuePlayer
AVQueuePlayer是AVPlayer的一个子类,用于按顺序播放多个项目
示例:
NSString *fooVideoPath = [[NSBundle mainBundle] pathForResource:@"tommy" ofType:@"mov"];
NSString *barVideoPath = [[NSBundle mainBundle] pathForResource:@"pamela" ofType:@"mp4"];
AVPlayerItem *fooVideoItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:fooVideoPath]];
AVPlayerItem *barVideoItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:barVideoPath]];
self.queuePlayer = [AVQueuePlayer queuePlayerWithItems:[NSArray arrayWithObjects:fooVideoItem, barVideoItem,nil]];
[self.queuePlayer play];
// things happening...
[self.queuePlayer advanceToNextItem];
是的,我停止播放,设置新的URL,然后将其设置为播放。感谢您提供如何删除警告的提示,非常感谢;-)嗨@nemesis,另一个答案看起来是实现你目标的最佳方式,你能把它标记为被接受吗?Heelo@A-Live。我不想接受另一个答案,因为它不能回答我的问题。我想知道如何更改AVAudioPlayer的当前URL,而不是按顺序播放项目。@当然,我认为可以通过添加新URL作为下一个播放列表项目、推进播放并删除第一个项目来完成。这样,播放列表中就有一个项目了,但对,还有额外的更改。这个问题是关于音频的。这对音频有用吗?