AVAUdioPlayer - 更改当前URL

nem*_*sis 4 avaudioplayer ios

在我的音频播放器应用程序中,如果我点击快进按钮 - 播放器必须找到播放列表中的下一首歌并播放它.我所做的是从下一首歌中获取URL,并尝试将其放在后台(后台是AVAudioPlayer*的实例)url字段,但该属性是只读的.所以我实际上在做什么 - 我正在调用initWithContentsOfURL方法(再次)来设置这样的URL:

[self.background initWithContentsOfURL:
[[_playlist.collection objectAtIndex:currentIndex] songURL] error:nil];
Run Code Online (Sandbox Code Playgroud)

这是合法的吗?我的意思是,编译器告诉我表达式结果未使用,但它实际上是有效的.还有另一种方法吗?谢谢 ;-)

jam*_*ack 17

要播放多个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];
Run Code Online (Sandbox Code Playgroud)