mpmovieplayercontroller从后台加载新的音频网址

时间:2012-11-27 23:42:29

标签: mpmovieplayercontroller

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

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

- (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桥接。

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

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

赞赏它。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

以下是文档以防万一。 链接:Check this link and scroll to: "Declaring Your App’s Supported Background Tasks"

我对mpmovieplayercontroller有自己的问题,在搜索帮助时我发现了你的帖子。

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