Iphone在当前帧内转动视频

时间:2015-07-11 06:25:23

标签: ios objective-c iphone cgaffinetransform

嗨,我正在观看视频 宽度= 720 身高= 1280

所以视频处于Portait模式。

我希望视频旋转90度。 但是想要将旋转的视频放在720,1280的相同视频大小内。 是的视频将被缩放, 但我需要这种类型的轮换。

请检查之前的图像之后的

这是我的代码:

 CGAffineTransform rotationTransform =  CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(90.0));
    CGAffineTransform rotateTranslate =   CGAffineTransformTranslate(rotationTransform,400,320);
    [layerInst setTransform:rotateTranslate atTime:kCMTimeZero];

Before video screenshot After Video screenshot

1 个答案:

答案 0 :(得分:2)

您可以一起使用缩放,旋转和平移变换,并将每个变换连接到原始资产变换。请尝试下面的问题代码

        // here assetTransform is your AVAssetTrack preferred transform
        CGAffineTransform defaultTransfrom = assetTransform;
        // rotate 90 degree
        CGAffineTransform rotateTransform = CGAffineTransformMakeRotation( M_PI_2);
        //get scale factor of resized video
        float scaleFactor = videoSize.width/videoSize.height;
        CGAffineTransform scaleTransform = CGAffineTransformMakeScale(scaleFactor,scaleFactor);
        // get blank Space At Bottom after rotation and scaling
        float blankSpaceAtBottom = (videoSize.height-scaleFactor*videoSize.width);
        //increase y translation according to scaling factor
        float ytranslation = blankSpaceAtBottom/2/scaleFactor;
        CGAffineTransform translationTransform = CGAffineTransformMakeTranslation(videoSize.height,ytranslation);
        //concat all transform
        CGAffineTransform finalTransform = CGAffineTransformConcat(CGAffineTransformConcat(defaultTransfrom,rotateTransform),translationTransform);
       finalTransform = CGAffineTransformConcat(finalTransform,scaleTransform);
        //apply final transform to layer instruction
        [layerInstruction setTransform:finalTransform atTime:kCMTimeZero];

如果您需要更多说明,请与我们联系。