有没有任何简洁的方法我可以编辑相机预览和显示的内容?

时间:2017-10-16 12:21:51

标签: ios swift avcapturesession avcapture ios-camera

我想编辑相机预览流,并直接在屏幕上显示。现在我可以通过AVCaptureVideoDataOutput获取内容,但是如何编辑它并使用编辑的流而不是原始流?我尝试将CMSampleBuffer转换为UIImage并在UIImageView中显示,速度还可以。但我想知道是否有更好的方法来实现它。

提前致谢!

1 个答案:

答案 0 :(得分:-1)

我必须做类似的事情。最后,我在视频流顶部的UIImageView中添加了一个CALayer。

例如:添加一个水印徽标(Xamarin代码 - 扩展方法),其中parentLayer将是UIImageView.Layer

    public static void AddWatermarkLayer(this CALayer parentLayer, string watermarkImagePath, nfloat watermark_border, nfloat watermark_size)
    {
        nfloat watermark_x = parentLayer.Frame.Width - (watermark_size + watermark_border);
        nfloat watermark_y = watermark_border;

        var watermarkImage = UIImage.FromFile(watermarkImagePath); //

        CALayer aLayer = new CALayer();
        aLayer.Contents = watermarkImage.CGImage;
        aLayer.Frame = new CGRect(watermark_x, watermark_y, watermark_size, watermark_size);
        aLayer.Opacity = 1f; 
        parentLayer.AddSublayer(aLayer);
    }

如果您需要实际保存此“已编辑”的流,则必须使用AVMutableVideoComposition应用所需的更改并将其保存到文件中。