0

我有一个 MPMoviePLayerController,它可以从解析为数组的 xml 播放列表中连续 http 流式传输音频文件。

问题是当一首歌曲正在播放时,手机被锁定,它继续播放歌曲,支持背景音频等等,直到歌曲结束....但是打电话时:

- (void) moviePlayBackDidFinish:(NSNotification*)notification {...}

我调用函数来加载下一首曲目

- (void) LoadTrack:(int)indexToPlay {

    //use the generic APIContentObject.
    APIContentObject *currentTrack = [playlist objectAtIndex:indexToPlay];
    NSLog(@"%@",[currentTrack SluggedURL]);

    //get url
    NSURL *url=[NSURL URLWithString:[currentTrack FileURL]];

    //moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
    if (!moviePlayer){

        moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

    }else{

        //moviePlayer = nil;
        //moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

        //moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
        //[moviePlayer initWithContentURL:url];
        [moviePlayer setContentURL:url];        
        moviePlayer.shouldAutoplay = YES;
        [moviePlayer prepareToPlay];
        [moviePlayer play];
    }
    ...

它不会加载曲目并在输出中为我提供以下信息:

[MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

正如您从注释行中看到的那样,我尝试了多种方法来解决这个问题。其中没有一个真正播放下一首歌曲。是因为背景音频需要恒定流吗?我不能这样做吗?

我们有一个 CMS,用户可以在其中更改他们的播放列表,因此它需要在后台进行 mp3->-mp3 桥接。

播放当前歌曲很好,但为什么不加载新歌曲?

还是网络请求不被视为“背景音频”的一部分?

非常欣赏它。

4

2 回答 2

0

我终于意识到我无法在后台启动任何新的 URL 连接。我需要切换到 m3u 风格的播放列表并使用点播媒体服务器来完成我想做的事情。

于 2012-12-16T17:20:16.500 回答
0

确保将 info.plist 文件中的 UIBackgroundModes 键设置为“音频”。这将允许您的应用程序在后台仍然执行代码。

这是文档以防万一。链接:检查此链接并滚动到:“声明您的应用支持的后台任务”

我对 mpmovieplayercontroller 有自己的问题,在寻求帮助时我找到了你的帖子。

我目前正在使用 mpmovieplayercontroller 播放音频,当歌曲结束时(moviePlayBackDidFinish),我向服务器询问下一首歌曲的 url。然后播放那首歌..冲洗并重复。当屏幕被锁定时它工作正常(这意味着当应用程序在后台并且屏幕被锁定时它正在启动一个 url 连接)。

于 2012-12-19T19:13:40.803 回答