0

配列に解析されるxmlプレイリストからオーディオファイルを連続してストリーミングするMPMoviePLayerControllerがあります。

問題は、曲が再生されているときに電話がロックされ、曲が再生され続け、バックグラウンドオーディオがサポートされ、曲が終わるまですべてが再生されることです。

- (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 キーを「audio」に設定してください。これにより、アプリはバックグラウンドでもコードを実行できます。

念のため、ここにドキュメントを示します。リンク:このリンクを確認して、「Declaring Your App's supported Background Tasks」までスクロールします。

私は mpmovieplayercontroller で私自身の問題を抱えており、ヘルプを探しているときにあなたの投稿を見つけました。

現在、mpmovieplayercontroller でオーディオを再生しています。曲が終了すると (moviePlayBackDidFinish)、次の曲の URL をサーバーに要求します。そして、その歌が再生されます..すすぎ、繰り返します。画面がロックされているときは正常に動作します (つまり、アプリがバックグラウンドにあり、画面がロックされているときに URL 接続を開始しています)。

于 2012-12-19T19:13:40.803 に答える