嗨,我正在观看视频 宽度= 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];
答案 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];
如果您需要更多说明,请与我们联系。