2015-04-03 120 views
3

我试图裁剪一个视频,用iPhone相机拍摄,然后将它放在UIImageView的顶部。我一直在关注这个问题如何在iOS中将视频裁剪成圈?现在我可以拍摄视频并将其放在另一个前期录制的视频之上。现在我想让背景成为图像,前景是裁剪后的视频。我现在的主要问题是将视频裁剪出我想剪裁的部分。我不能在这里发布所有的代码,但这里是github回购的地方,修改后的类叫做CustomVideoCompositor.m https://github.com/mayoff/stackoverflow-28258270-video-in-oval-on-video/tree/master/video。而且我无法将它编辑到我想要的椭圆中,并且它的下半部分高于更宽。在iOS中将视频裁剪成圆形?

编辑

我想做出切割,使得仅在圆角矩形的这一部分东西会被裁剪和可用。

enter image description here

回答

0

你需要使用AVPlayer,因为这使您可以回一次玩几个视频或有您的视频出现在另一个视图的顶部。另外,通过使用AVPlayer和AVPlayerLayer,它很容易使视频呈现为圆形。 (这里有一个很好的教程就可以了解更多:http://jacopretorius.net/2013/02/playing-video-in-ios.html

这里的代码(Objective-C的):

在视图控制器的.h文件:

#import <AVFoundation/AVFoundation.h> 

然后在viewDidLoad

[super viewDidLoad]; 

// Set up the image view first (the imageView is an IBOutlet) 
self.imageView.image = [UIImage imageNamed:@"image"]; 
self.imageView.alpha = 0.2; 

NSURL *url = [[NSBundle mainBundle] URLForResource:@"video" withExtension:@"mp4"]; 
AVPlayer *player = [AVPlayer playerWithURL:url]; 

CGFloat diameter = MIN(self.view.frame.size.width, self.view.frame.size.height) * 0.8; 

AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:player]; 
layer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
layer.frame = CGRectMake((self.view.frame.size.width - diameter)/2, 
         (self.view.frame.size.height - diameter)/2, 
         diameter, diameter); 

layer.cornerRadius = diameter/2; 
layer.masksToBounds = YES; 

// Put the AVPlayerLayer on top of the image view. 
[self.view.layer addSublayer:layer]; 

[player play]; 
+0

我想在Xcode中做到这一点,在Xcode中没有'let'? – iqueqiorio 2015-04-05 17:44:15

+0

啊,你在用Objective-C吗?我用Swift。 – ABakerSmith 2015-04-05 17:45:04

+0

是obj-c谢谢 – iqueqiorio 2015-04-05 17:50:00

2

如果您只想裁剪视频的视觉效果,而无需修改视频文件,只需在视频图层中添加遮罩即可。我的意思是CALayer mask属性。

您可以像这样创建圆形遮罩:绘制黑色矩形,然后在其上绘制透明圆。