1

次のコードでMPMovieViewControllerを提示します。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Tutorial" ofType:@"m4v"];

// If path is NULL (the resource does not exist) return to avoid crash
if (path == NULL)
    return;

NSURL *url = [NSURL fileURLWithPath:path];

MPMoviePlayerViewController *mpViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
mpViewController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
mpViewController.moviePlayer.shouldAutoplay = YES;

// NOTE: This can crash the app in the Simulator. This is a known bug
// in xcode: http://stackoverflow.com/a/8317546/472344
[self presentMoviePlayerViewControllerAnimated:mpViewController];

これはiOS4.3以降では正常に機能しますが、iOS 4.2.1を実行しているデバイスで誰かにテストしてもらい、ムービープレーヤーのView Controllerが表示されますが、すぐに終了します。これを説明するドキュメントには何も見つかりません。誰かアイデアはありますか?

4

1 に答える 1

1

それは、映画のコンテンツ自体の非互換性によく似ています。

iOS 4.2.1 デバイスは iPhone 3G ではないかと思います。3G は、最近のモデルほど多くのコーデックをサポートしていません。

iOS4.2.1 (およびそれ以前) の iPhone 3G は、メイン プロファイルをサポートせず、ベースライン プロファイルのみをサポートします。

簡単に言うと、再生しようとしているビデオはデバイスと互換性がないため、H264 のベースライン プロファイルを使用してビデオを再エンコードする必要があります。

以下は、Apple によって作成された互換性とエンコーディングのマトリックスです。これは HTTP Streaming Encode Recommendations と題されていますが、非ストリーミング (プログレッシブ ダウンロード) およびローカル再生にも適用されます。

ここに画像の説明を入力

于 2012-08-16T22:30:52.850 に答える