1

最近我开始从事 iOS 应用程序开发。这些天我正在开发一个必须具有以下功能的音乐播放器:

- 来自 php Web 服务的歌曲在线缓冲。- 播放、暂停、停止、下一曲、上一曲。- 两个滑块,一个用于音量控制,另一个用于显示歌曲的播放时间。- 随机播放,重复歌曲。

我已经用 AVPlayer 和 AVAudioPlayer 尝试过这些东西,但是在 AVAudioPlayer 中,我认为无法从 url 流式传输数据,因为我已经尝试了很多,然后我通过使用 AVplayer 来完成此操作,但它不支持音量控制等选项,甚至如果缓冲在某个时候停止,缓冲也不是正确的,就像必须再次按下播放按钮一样。我需要这个音频播放器的紧急帮助任何教程任何我可以很容易理解的例子,因为我是这个领域的新手。这是代码

NSURL *url = [[NSURL alloc] initWithString:@"http://www.androidmobiapps.com/extrememusic/app/songs/1.mp3"];

[self setupAVPlayerForURL:url];

我在 viewdidload 上调用这首歌

-(void) setupAVPlayerForURL: (NSURL*) url {
AVAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];

audioPlayer = [AVPlayer playerWithPlayerItem:anItem];
[audioPlayer addObserver:self forKeyPath:@"status" options:0 context:nil];

}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

if (object == audioPlayer && [keyPath isEqualToString:@"status"]) {
    if (audioPlayer.status == AVPlayerStatusFailed) {
        NSLog(@"AVPlayer Failed");
    } else if (audioPlayer.status == AVPlayerStatusReadyToPlay) {
        NSLog(@"AVPlayer Ready to Play");
    } else if (audioPlayer.status == AVPlayerItemStatusUnknown) {
        NSLog(@"AVPlayer Unknown");
    }
}

}

4

1 回答 1

0

我已经完成了你上面提到的作为一个类的功能,并开源了它。无论您想直接使用该类还是将其视为 AVFoundation 初学者示例。祝你好运!

GitHub 上观看这个 repo

于 2013-02-07T06:43:23.657 回答