使用MPMoviePlayerController在视图中播放视频?

时间:2010-06-21 07:22:38

标签: iphone objective-c mpmovieplayercontroller

我正在尝试在视图中播放视频,因此我可以移动它,与其他视图一起执行布局,但我似乎无法使用MPMoviePlayerController。我在how to play video in portrait mode上看到了这个链接,但这是不可能的,因为视频源来自网络,应该可以在不同的平台上播放,而不仅仅是在iPhone上播放。

我成功地旋转了视频并进行了缩放,但它仍然包含在一个填满整个屏幕的UIWindow中。有没有办法创建一个中间UIWindow但在当前屏幕中不可见,所以你可以在那里播放视频,并可能添加子视图并将所有内容作为UIView返回,我可以将它放在任何地方?与创建CGGraphics上下文类似,在那里绘制对象并输出为图像。这也会阻止当前屏幕从纵向旋转到横向。

----- 2010/06/22 06:10 + 08:00 ---

为了回应Jasarien的回答(下图),实际上可以旋转和缩放视频。视频预加载后,它会创建另一个UIWindow实例,然后该实例成为当时的关键窗口。通过在MPMoviePlayerContentPreloadDidFinishNotification中创建回调选择器,可以应用当前键窗口的变换修改。

-(void)myMovieFinishedPreloading:(NSNotification*)aNotification  {
    NSArray *windows = [[UIApplication sharedApplication] windows];

    UIWindow *moviePlayerWindow = nil;
    if ([windows count] > 1) 
    {
    moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
    }

    CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
    transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
    [moviePlayerWindow setTransform:transform];

 }

现在我的问题是它是UIWindow的一部分,因为UIWindow是一个UIView子类,是否可以子视图这个UIView?此外,我似乎无法在预加载视频时禁用自动旋转行为。

2 个答案:

答案 0 :(得分:0)

iPhone上的视频始终全屏播放。带有iOS 3.2的iPad具有API,可以将视频视为普通视图。

对于iPhone,如果不编写自己的视频视图,您将无法获得所需的功能。

答案 1 :(得分:0)

查看AVPlayer和AVPlayerLayer。