裁剪视频到帧

时间:2017-08-31 03:21:26

标签: ios swift video avfoundation crop

我正在尝试将视频裁剪为一个框架,我将其缩放以匹配视频的自然尺寸比例。是否有直接的方法来裁剪视频而不处理各种疯狂的转换?

是否可以简单地裁剪AVVideoComposition(asset:applyingCIFiltersWithHandler:)中的帧然后更改视频合成renderSize

如果没有,那么有什么替代方案?

1 个答案:

答案 0 :(得分:0)

这完全取决于您呈现视频的方式。如果您使用AVSampleBufferDisplayLayer,请设置其属性 - > videoGravityAVLayerVideoGravityResizeAspect

如果您使用CVImageBufferRefCVPixelBufferRefCIImage进行渲染,那么我会这样做 - >

        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)

希望确实回答了你的问题,只是澄清你想用什么玩家/方法实现的目标。

小心,

/安德斯