iOS:直播AVPlayer

时间:2012-11-21 20:10:51

标签: objective-c ios avplayer http-live-streaming live-streaming

我想从服务器流式播放一首歌,这似乎与我完成它的方式一样好用,但是这种方法似乎有些事情似乎不可能。

我目前已经实例化了一个AVPlayer

player = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:@"http://media.soundcloud.com/stream/songID?stream_token=myToken"]];

当我的应用程序认为缓冲区足够时,就调用它。

这听起来很完美,但是我发现如果我停止指向AVPlayer实例,播放器会停止,如果我将应用程序推到后台,声音就会消失并暂停直到应用程序返回到前景。

是否可以让歌曲继续在后台播放AVPlayer?

如果没有,我应该改为HTTP Live Streaming吗?

我对iOS这方面很陌生,我非常感谢我的同事给我的任何指导!

2 个答案:

答案 0 :(得分:8)

您应该明确启用您的应用以在后台播放音频。将以下密钥插入Info.plist文件:

<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

reference

在开始播放音频之前,请添加以下行:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:NULL];

reference

答案 1 :(得分:0)

技术Q&amp; A QA1668 使用iOS上的AV Foundation在后台播放媒体

问:在应用程序处于后台时,如何确保在使用AV Foundation时我的媒体能够继续播放?

答:您必须声明您的应用在后台播放可听内容,并为您的音频会话分配适当的类别。另请参阅视频媒体的特殊注意事项。

声明您的应用在后台播放Audible内容

首先,声明您的应用程序提供特定的后台服务,并且必须允许它在后台继续运行。为此,请在应用程序的Info.plist文件中添加UIBackgroundModes键。它的值是一个数组,其中包含一个或多个字符串,用于标识应用程序支持的后台任务。指定字符串值audio以指示应用程序在后台播放可听内容:

图1声明应用程序在后台播放可听内容。

重要提示:UIBackgroundModes音频键还允许应用使用AirPlay在后台流式传输媒体内容(另请参阅视频媒体的特殊注意事项)。