【问题标题】:Play a video inside a view using MPMoviePlayerController?使用 MPMoviePlayerController 在视图中播放视频?
【发布时间】:2023-03-23 13:44:01
【问题描述】:

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

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

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

响应 Jasarien 的回答(如下),实际上可以旋转和缩放视频。视频预加载后,它会创建另一个 UIWindow 实例,该实例随后成为那个时候的 keywindow。通过在 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 进行子视图?此外,我似乎无法在预加载视频时禁用自动旋转行为。

【问题讨论】:

    标签: iphone objective-c mpmovieplayercontroller


    【解决方案1】:

    iPhone 上的视频始终全屏播放。装有 iOS 3.2 的 iPad 具有允许将视频视为普通视图的 API。

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

    【讨论】:

      【解决方案2】:

      查看 AVPlayer 和 AVPlayerLayer。

      【讨论】:

      • 也许这应该是一个评论?或者,也许您可​​以更详细地了解
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2014-02-07
      • 1970-01-01
      • 2012-11-29
      • 2013-10-10
      • 2012-05-11
      • 1970-01-01
      相关资源
      最近更新 更多