2012-01-23 44 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

相关问题