0

私のiPadアプリでは、WebサイトからMP4を再生するMPMoviePlayerControllerを作成します。MP4では話している人がいます。アプリで、オーディオとビデオの同期が0.5秒または1/4秒ずれていることに気づきました。(私はWebブラウザーでビデオを表示し、ラグがないため、これを知ることができます。)

私がこれをしなければならない唯一の手がかりは、MPMoviePlayerControllerが最初にロードされると、オーディオの再生が開始されますが、ビデオは再生されません。その後、ビデオの再生が開始され、数フレームスキップして「追いつく」ように見えます。オーディオ...しかし、それは完全に同期していません。

このクラスがAppleのドキュメントによると「ブラックボックス」であり、既存のメソッドやプロパティのどれもこの問題に役立つものがないことを考えると、私は少し困惑しています。奇妙な回避策に直面するのではなく、少し遅れてそのままにしておく必要があるかもしれません。誰かがこれを以前に経験したことがあるか、または解決策を提案できるかどうかを確認したかったのです。

私はMountainLion、最新のXCode、iOS6を搭載したiPad2で実行しています。

コントローラの生成に使用するコードは次のとおりです。

-(void)startVideoPlaying {

if (!self.theMoviePlayer) {
    self.theMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: movieURL];
    [self.bgView addSubview: self.theMoviePlayer.view];
    [self.theMoviePlayer.view setFrame: movieContainer.frame]; // player's frame must match parent's
} else {
    [self.theMoviePlayer setContentURL:movieURL];
}
    self.theMoviePlayer.shouldAutoplay = YES;
    [self.theMoviePlayer play];
}

助けてくれてありがとう。

4

1 に答える 1

1

さまざまなテストを行った結果、私が再生した MP4 のエンコーディングに何か問題があると結論付けなければなりません。私はビデオ コーデックの第一人者ではありませんが、次のテストを行いました。

1) MP4 をダウンロードしてアプリに配置し、ファイル URL を介して MPMoviePlayerController にロードします。オーディオはまだ同期していないため、接続の問題ではありません。

2) Web で別の MP4 (Vimeo 以外のもの) を見つけて、プレーヤーにストリーミングします。オーディオは適切に同期されました。再生しようとしていた MP4 に問題がある可能性があります。

3) MP4 をダウンロードし、Handbrake を使用してさまざまな設定 (iPad プリセットを含む) で M4V に変換します。オーディオは正常に同期されました。

これに基づいて、プレーヤーではなく、再生しようとしていたファイルに何か問題があるように思えます (またはプレーヤーが処理できない)。残念ながら、私が再生しようとしているファイルは単純に変換することはできません。それらは大規模な Web サイト システムの一部であり、何百ものファイルを変更する必要があります。したがって、私は自分の質問に答えましたが、問題は解決していません。

于 2012-09-26T04:33:57.793 に答える