【问题标题】:How to rotate a video 90º in MPMovieplayercontroller如何在 MPMovieplayercontroller 中将视频旋转 90º
【发布时间】:2013-09-13 20:29:51
【问题描述】:

我正在使用MPMovieplayercontroller 播放视频,它播放来自网络服务的视频。源视频文件是在肖像模式下拍摄的,但已逆时针旋转 90º。因此,当我在 MPMovieplayercontroller 中播放它时,它的播放方式就像附加的以下格式是示例图像

有没有办法旋转来自网络服务的视频文件?

我尝试为MPMovieplayercontroller.view 应用变换,但电影播放器​​控件也在旋转。我的要求是我只需要旋转视频部分。有什么办法可以做到这一点。请帮我解决这个问题,这将是很大的帮助。

提前致谢

【问题讨论】:

  • 也许GPUImage 可以提供帮助。尝试将GPUImageTransformFilter 设置为affineTransformCGAffineTransformMakeRotation(M_PI/2)
  • 您的代码没有问题这是以这样的方式捕获的视频,它显示这样的输出它存在录制问题,因此如果您为此添加任何代码,那么它也会影响其他视频所以不要做任何事情,因为你的结果没有任何问题。
  • @eptdeveloper 我非常同意你的观点,我要求我的后端团队解决这个问题,同时记录他们正在分析解决这个问题。在这两者之间,我试图在 iOS 中找到任何替代解决方案。
  • @eptdeveloper 感谢您的 cmets。我需要旋转所有记录在后端的视频。因为所有视频都仅以旋转格式存储。所以我认为这对我的要求不会有问题
  • @thavasidurai : 我明白祝你好运:)

标签: iphone ios objective-c mpmovieplayercontroller


【解决方案1】:

试试这个:(我已经为 MPMoviePlayerViewController 创建了一个子类)

- (void)configureSubViews
{
    if (self.moviePlayer.view.subviews.count > 0)
    {
        UIView *view = self.moviePlayer.view.subviews[0];
        if (view.subviews.count > 0)
        {
            UIView *sView = view.subviews[0];
            self.viewPlayerVideoContent = [sView viewWithTag:1002];
            self.viewPlayerControls     = [sView viewWithTag:1003];
        }
    }
}

我不太喜欢以这种方式处理子视图,但它可以工作..(至少对于 iOS5 和 iOS6)

然后,您可以尝试旋转 viewPlayersVideoContent :)

【讨论】:

    【解决方案2】:

    您需要按照以下代码旋转MPMoviePlayer 视图。 这将最有效。我已经测试过了。

        NSURL *fileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Video" ofType:@"mp4"]];
        MPMoviePlayerViewController *moviePlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:fileUrl];
        [moviePlayerController.moviePlayer prepareToPlay];
        [moviePlayerController.moviePlayer setRepeatMode:MPMovieRepeatModeOne];
        [moviePlayerController.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
        moviePlayerController.view.transform = CGAffineTransformMakeRotation(M_PI/2);
        [self.view addSubview:moviePlayerController.view];
    

    【讨论】:

    • 谢谢你,我会测试这个并让你知道
    • 这将旋转视频视图和控件,对吗?因为我的要求控件不应该旋转
    • 它以横向模式显示视频。但不显示 mpmovieplayer 的默认控件
    • 它应该显示 . Struts 和 Springs 肯定有问题
    【解决方案3】:

    您可以通过以下代码实现此目的,

    yourMoviePlayerController.view.transform = CGAffineTransformMakeRotation(M_PI/2);
    

    如果你想让你的控件固定在某个地方,默认情况下是不可能的。所以你需要通过以下代码隐藏默认控件,

    yourMoviePlayerController.controlStyle = MPMovieControlModeHidden;
    

    然后以编程方式为控件添加子视图。

    【讨论】:

    • 有没有使用默认控件的选项?
    • 不,我不这么认为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多