我正在尝试将视频裁剪为帧,并缩放以匹配视频的自然大小比例。有没有一种直接的方法可以裁剪视频,而不需要处理各种疯狂的转换?
是否可以简单地裁剪AVVideoComposition(asset:applyingCIFiltersWithHandler:)中的帧,然后更改视频合成renderSize
如果不是,那么还有什么选择呢?
发布于 2017-09-01 05:40:45
这完全取决于你如何渲染你的视频。如果使用AVSampleBufferDisplayLayer,则将其属性-> videoGravity设置为AVLayerVideoGravityResizeAspect。
如果您从CVImageBufferRef、CVPixelBufferRef或CIImage进行渲染,那么我将执行此->
CGFloat w = self.videoPreviewView.drawableWidth;
CGFloat h = self.videoPreviewView.drawableHeight;
CGFloat previewAspect = w / h;
CGRect drawRect = rect;
drawRect.origin.y += (drawRect.size.height - drawRect.size.width / previewAspect) / 2.0;
drawRect.size.height = drawRect.size.width / previewAspect;,然后使用[self.ciContext drawImage:image inRect:CGRectMake(0, 0, w, h) fromRect:drawRect];进行渲染
您还可以像下面这样使用方法AVMakeRect (Swift3,忘记Obj-C名称)
let yourDrawableFrame:CGRect = AVMakeRect(aspectRatio: video.size, insideRect: theViewToRenderIn.frame)希望这确实回答了你的问题,只是澄清了你想要使用什么播放器/方法来实现什么。
保重,
/Anders
https://stackoverflow.com/questions/45972682
复制相似问题