17

アプリ (音楽およびビデオ ストリーム プレーヤー) を iOS 6 シミュレーターで実行するのに問題があります。

音楽またはビデオを開始するとクラッシュし、次のスレッドにエラーが表示されます: com.apple.coremedia.networkbuffering

そしてこれはログ情報にあります:

2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay for pause
2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay
2012-09-13 17:45:09.305 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.307 app[32563:c07] handlePlaybackNowPlayingNotification
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-09-13 17:45:09.318 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay
2012-09-13 17:45:09.320 app[32563:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

http ベースのストリームで MPMoviePlayerController を使用していますが、iOS 4 または iOS 5 で正常に動作します。

それを修正する方法についてのアイデアはありますか?

4

9 に答える 9

15

私はまったく同じ問題を抱えていました...

プレーヤーをインスタンス化した直後にこれを実行してみてください:

[player prepareToPlay];

play を呼び出すと自動的に呼び出されるはずですが、iOS 6 では明示的に呼び出さないと問題が発生するようです。

私の場合、それは問題を解決しました。

于 2012-09-17T09:52:00.123 に答える
13

あなたが観察しているのはクラッシュではなく例外です。ほとんどの場合、例外ブレークポイントが有効になっているため、アプリがクラッシュすると想定されます。

その例外は実際には SDK によって適切に処理 (cought) され、アプリのクラッシュは発生しません。

これはシミュレーターでのみ発生し、デバイスでは発生しないことに注意してください。

この問題は、この問題what-does-this-gdb-output-meanと密接に関連しています。違いは、これらのエラー メッセージは表示されなくなりますが、例外はスローされます (咳も出ます)。

于 2012-12-20T13:43:46.577 に答える
5

xcode 4.5+SDK6.0とxcode4.4.1+ SDK5.1の組み合わせを使用して、MPMoviePlayerControllerのiOS6バージョンに問題があることを確認しました。私はiPadでしか作業していません。

これが私の観察です:--MPMoviePlayerControllerを使用する私のコードでiOS6.0でビデオが再生されるのを見たことがありません。--xcode4.4.1およびSDK5.1では、コードがiosバージョン5.1、5.0、および4.3で機能することを確認しました。--xcode4.5およびSDK6.0では、プレーヤーは常にシミュレーターで失敗しますが、iOS5.1デバイスへのほとんどのインストールは機能します。iOS 5.1デバイスにアプリを再インストールし、プレーヤーを試し続けました。一度だけ失敗しました。

プレーヤーが失敗したときの私の観察は次のとおりです。-プレーヤーが失敗したとき、私はあなたが上で述べたログを見ました。他の時には、私はログさえ見ませんでした。-MPMoviePlayerPlaybackDidFinishNotification通知を受け取った関数にブレークポイントを設定しました。次に、プレーヤーでerrorLogを探しましたが、何もありませんでした。MPMoviePlayerPlaybackDidFinishReasonUserInfoKeyを探しましたが、0(MPMovieFinishReasonPlaybackEnded)でした。したがって、MPMoviePlayerControllerには、何か問題が発生したという手がかりはありませんでした。

結論:ios6および/またはSDK6にはバグがあります。

于 2012-09-21T22:43:39.667 に答える
2
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];



moviePlayer.view.frame = self.view.frame;
moviePlayer.moviePlayer.shouldAutoplay=YES;
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer.moviePlayer setFullscreen:YES animated:YES];
[self.view addSubview:moviePlayer.view];
[moviePlayer.moviePlayer play];

注:iOS 6より前では、[moviePlayer.movi​​ePlayerplay]を呼び出す必要はありません。ビューにプレーヤービューを追加すると、再生が開始されますが、iOS 6では、再生関数を明示的に呼び出す必要があります

于 2012-12-21T09:16:23.363 に答える
1

私はios6用のMPMoviePlayerControllerで同じ問題を抱えています。だから私は自分のコードをフローに変更しました、そして今それはうまく働いています。

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]];
MPMoviePlayerViewController  *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];



moviePlayer.view.frame = self.view.frame;
moviePlayer.moviePlayer.shouldAutoplay=YES;
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer.moviePlayer setFullscreen:YES animated:YES];
[self.view addSubview:moviePlayer.view];
[moviePlayer.moviePlayer play];
于 2012-09-24T09:57:45.987 に答える
0

以下のコードに問題があります。プレーヤーは全画面表示になりますが、その直後に終了し、ビデオがまったく再生されません。

NSURL *url = [NSURL URLWithString:@" http://streaming.disponivel.uol.com.br/video360p2/288148-1192657.mp4 "];

    _player = [[MPMoviePlayerViewController alloc] initWithContentURL:url];

    [_player.moviePlayer setMovieSourceType:MPMovieSourceTypeFile];

    [_player.moviePlayer setControlStyle:MPMovieControlStyleDefault];

    [_player.moviePlayer setFullscreen:YES animated:YES];      

    [self presentMoviePlayerViewControllerAnimated:_player];

    [_player.moviePlayer prepareToPlay];

    [_player.moviePlayer play];
于 2013-02-05T18:10:44.363 に答える
0

アプリでライブ ビデオを表示するために も使用していMPMoviePlayerViewControllerますが、上記と同じエラー リストが表示されます。MPMoviePlayerビデオを表示するための大きなデータをサポートしていないことがわかりましたが、小さなビデオ データを使用すると問題なく動作し、エラーは発生しません。実際には、再生準備とムービー プレーヤーの再生プロパティの問題ではありません。

より大きなデータを表示する必要がある場合は、アプリで webview を使用してください。

于 2013-03-25T13:02:11.110 に答える
0

最初に私は以下のようなことをしました

[self.player.moviePlayer prepareToPlay];
[self.player.moviePlayer play];
self.player.moviePlayer.shouldAutoplay = YES;

そして、私が下の行を削除したとき

self.player.moviePlayer.shouldAutoplay = YES;

問題は解決しました。

于 2012-12-20T13:17:35.050 に答える
0

私はまだこの問題を解決していませんが、MPMoviePlayerControllerフルスクリーンに入ろうとしているとき、またはコントローラに潜在的な遅れがあるときの私の特定のケースに関連しているようです.

私は Web からコンテンツをストリーミングしていません。コンテンツはデバイス上にあるため、最初はコンテンツがビューに正常に表示されます。

私の推測では、MPMoviePlayerController再生中の「デッド タイム」を防止するための新しい機能が実装されたようです。映画データがオフラインになったり、たまたま Wi-Fi の範囲外に出たりするとハングするアプリを見たことがあります。」

この問題を解決するための私の試みは、に渡された通知メッセージを確認することです-

(void)moviePlayBackDidFinish: (NSNotification*)notification

これは、ユーザー情報ディクショナリを照会することによって行われます

NSDictionary *userInfo = [notification userInfo];

MPMoviePlayerPlaybackDidFinishReasonUserInfoKeyこのタイプの障害の場合、の値は 0 です。

出発点です。私の考えは、このユニークな失敗について、この時点で映画を復活させることです.

結果は追ってお知らせします。

于 2012-09-23T10:50:24.307 に答える