2012-01-23 56 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,肖像)。現在,如果你想顯示電影的大多數屏幕填充的方式,但仍保持一定的控制可見,你可以使用下面的計算實際MPMoviePlayerController.view高度:

768/1.87 = 411(四捨五入)

產生的框架是:

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,但它會影響默認的電影控制器。其實它隱藏了尋求的酒吧。正如Amogh所說,當我嘗試獲得自然尺寸時,視頻不會被加載。那麼在哪裏獲得自然尺寸並將高度設置爲視頻幀? – byJeevan

相關問題