2

MPMoviePlayerViewController を使用して、フォーマット 3gp のビデオを再生します。一部のビデオは再生できますが、他のビデオは再生できません。MPMoviePlayerViewController は、ビデオの長さが 0 秒であるように、ロードしてすぐに終了します。ビデオに問題があるに違いないと思いました。しかし、私はアルバム内のiPhoneのビデオプレーヤーを使用しています.それはビデオを再生することができます! したがって、MPMoviePlayerViewController は強力ではないのではないかと思います。また、avfoundation フレームワーク avplayer を使用してビデオを再生したいと考えています。コンテンツ ビューにサブレイヤーを追加します。失敗しました..それは私を夢中にさせます! 誰かがいくつかの問題に遭遇しましたか?

ここに私のコードがあります

-(void) playMovieWithSDK: (NSURL*) movieUrl
{
if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 3.2) {
    MPMoviePlayerViewController *mSdk4Player = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];
    mSdk4Player.navigationController.navigationBar.tag = 1000;
    if (mSdk4Player) {
        [self presentMoviePlayerViewControllerAnimated:mSdk4Player];
        mSdk4Player.moviePlayer.scalingMode= MPMovieScalingModeAspectFit;
        mSdk4Player.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
        mSdk4Player.moviePlayer.shouldAutoplay = YES;
        [mSdk4Player release];

        [[NSNotificationCenter defaultCenter]addObserver: self
                                                selector: @selector(movieFinishedCallback:)
                                                    name: MPMoviePlayerPlaybackDidFinishNotification
                                                  object: mSdk4Player.moviePlayer];
    }
}
else if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 3.2) { // sdk 3.0 播放器
    MPMoviePlayerController* mSdk3player = [[MPMoviePlayerController alloc] initWithContentURL: movieUrl];
    mSdk3player.scalingMode = MPMovieScalingModeAspectFit;
    [[NSNotificationCenter defaultCenter]addObserver: self
                                            selector: @selector(movieFinishedCallback:)
                                                name: MPMoviePlayerPlaybackDidFinishNotification
                                              object: mSdk3player];
    [mSdk3player play];
    }
}
4

1 に答える 1

3

再生しようとしているビデオは、MPMoviePlayerController でサポートされている基本的なコーデックと互換性がない可能性があります。

ドキュメントによると:

このクラスは、iOS でサポートされているムービーまたはオーディオ ファイルを再生します。これには、ストリーミング コンテンツと固定長ファイルの両方が含まれます。ムービー ファイルの場合、これは通常、拡張子が .mov、.mp4、.mpv、および .3gp で、次の圧縮規格のいずれかを使用するファイルを意味します。

  • H.264 ベースライン プロファイル レベル 3.0 ビデオ、30 fps で最大 640 x 480。(Baseline プロファイルは B フレームをサポートしていません。)

  • MPEG-4 パート 2 ビデオ (シンプル プロファイル)

このクラスを使用してオーディオ ファイルを再生すると、オーディオの再生中に QuickTime のロゴが表示された白い画面が表示されます。オーディオ ファイルの場合、このクラスは最大 48 kHz の AAC-LC オーディオ、および最大 48 kHz の MP3 (MPEG-1 Audio Layer 3) ステレオ オーディオをサポートします。

于 2012-08-31T09:15:03.707 に答える