2012-01-23 8 views
3

ビデオを再生するMPMoviePlayerControllerがあります。MPMoviePlayerController内で実際に再生されているビデオから座標を取得する方法は?

私の問題は、アスペクト比を維持するためにビデオの寸法が変化するため、ビデオの境界線とプレーヤーの境界線との間に大きな黒い隙間があることです。 黒い隙間は水平で垂直です。

実際の映像がどの矩形に含まれているかを知る方法はありますか? その後、私はビデオのタッチ座標を知ることができました。

答えて

5

ムービーコンテンツの適切な寸法/アスペクト比を取得するには、MPMoviePlayerControllerプロパティnaturalSizeを使用できます。ムービーフレームのMPMoviePlayerController Class Reference

naturalSize 

幅と高さから


。 (読み取り専用)

@property (nonatomic, readonly) CGSize naturalSize 

ディスカッション

このプロパティは 正方形ピクセルでの動画のきれいな開口を報告します。したがって、報告された寸法は、アナモルフィックコンテンツおよびアパーチャモードを考慮に入れている( )。

再生中に映画の自然なサイズが変更される可能性があります。これは、通常、ストリーミングのビットレートが のコンテンツが変更されたとき、または再生がオーディオのみとオーディオとビデオの組み合わせの間で切り替わるときに発生します。

有効期限 iOS 3.2以降で使用できます。 MPMoviePlayerController.h


で宣言 は、今ではその自然なサイズのため280x150を返し、ムービーを再生していると仮定することができます。その結果、おおよそ1.87(幅を高さで割ったもの)のアスペクト比になります。ここで768x1024(iPad、肖像画)の画面解像度があると仮定しましょう。

768/1.87 = 411(丸い)

たフレーム:あなたが最も画面の充填方法でその映画を表示するが、まだ目に見えるあなたのコントロールの一部を維持したい、今の場合は、実際のMPMoviePlayerController.view高さのために、以下の計算を使用しますis:

MPMoviePlayerController.view.frame = CGRectMake(0.0f, 
               (1024.0f - 411.0f)/2.0f, 
               768.0f, 
               411.0f); 
+1

ありがとうございます!私は実際にこのプロパティを持っていましたが、naturalSizeの高さと幅は常に0になるようになっていました。 私は、コンソールにnaturalSizeを印刷しようとしたときにビデオが正しく読み込まれなかったからです。 これで正常に動作します。 もう一度アスペクト比の計算に感謝します:) –

+1

この自然なサイズは、コンテンツが再生可能になった時点で利用可能になるはずです(負荷状態を待つ必要があります)。使用可能なnaturalSize。 – Till

+0

ねえ、naturalSizeはここでも私に0を返します。 MPMovieNaturalSizeAvailableNotificationを試しましたが、デフォルトのムービーコントローラに影響します。実際にそれはシーカーを隠しています。アモフが言及したように、私は自然なサイズを取得しようとしたときにビデオが読み込まれません。だから自然なサイズを取得し、ビデオフレームに高さを設定するには? – byJeevan

関連する問題