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

Posted

技术标签:

【中文标题】如何通过 http 链接在 iOS6 应用程序中播放 mp3 格式的歌曲?【英文标题】:How to play song in an iOS6 app with mp3 format from an http link? 【发布时间】:2013-01-18 06:47:54 【问题描述】:

最近我开始从事 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");
    

【问题讨论】:

【参考方案1】:

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

在 GitHub 上观看这个 repo here

【讨论】:

以上是关于如何通过 http 链接在 iOS6 应用程序中播放 mp3 格式的歌曲?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios6.1中将表格视图列表显示为封面流

iOS6 中的短信通知

Cordova 3.1 在 iOS6 上的 Safari 中打开链接

在 iOS 6 应用程序中播放广播链接

iOS6 使用 PlayAndRecord 音频会话类别时音量非常低

如何将文本字段添加到警报视图? Xcode 4.5 iOS6