Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVAUdioPlayer-更改当前URL_Ios_Avaudioplayer - Fatal编程技术网

Ios AVAUdioPlayer-更改当前URL

Ios AVAUdioPlayer-更改当前URL,ios,avaudioplayer,Ios,Avaudioplayer,在我的音频播放器应用程序中,如果我按下快进按钮,播放器必须在播放列表中找到下一首歌曲并播放。我要做的是从下一首歌中获取URL,并尝试将其放在后台(后台是AVAudioPlayer*的实例)URL字段中,但该属性是只读的。所以我实际上正在做的是——我再次调用initWithContentsOfURL方法来设置URL,如下所示: [self.background initWithContentsOfURL: [[_playlist.collection objectAtIndex:currentIn

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

[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作为下一个播放列表项目、推进播放并删除第一个项目来完成。这样,播放列表中就有一个项目了,但对,还有额外的更改。这个问题是关于音频的。这对音频有用吗?