2

我想从服务器流式传输一首歌曲,这似乎与我所做的方式一样工作得很好,但是这种方法似乎无法实现某些事情。

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

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

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

这播放的声音非常好,但我发现如果我停止指向 AVPlayer 实例,播放器会停止,如果我将应用程序推到后台,声音会消失并暂停,直到应用程序回到前台。

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

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

我对 iOS 的这一方面非常陌生,我将非常感谢我的 SO-ers 同伴可以给我的任何指导!

4

2 回答 2

8

你应该明确地让你的应用在后台播放音频。将以下键插入 Info.plist 文件:

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

参考

在开始播放音频之前还要添加以下行:

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

参考

于 2012-11-21T20:15:43.537 回答
0

技术问答 QA1668 在 iOS 上使用 AV Foundation 在后台播放媒体

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

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

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

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

图 1 声明应用在后台播放有声内容。

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

于 2016-08-04T13:55:28.473 回答