如何在http链接中播放带有mp3格式的iOS6应用程序中的歌曲?

时间:2013-01-18 06:47:54

标签: ios6 xcode4.5 avaudioplayer avplayer

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

- 从php网络服务中在线缓存这首歌。 - 播放,暂停,停止,下一首歌曲,上一首歌曲。 - 两个滑块,一个用于音量控制,另一个用于显示歌曲的播放时间。 -shuffle,重复一首歌。

我用AVPlayer和AVAudioPlayer尝试了这些东西,但在AVAudioPlayer中我无法从网址流式传输数据,我认为因为我已经尝试了很多,然后我通过使用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");
    }
}

}

1 个答案:

答案 0 :(得分:0)

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

在GitHub here

上观看此回购