有啥巧妙的方法可以编辑相机预览和显示的内容吗?
Posted
技术标签:
【中文标题】有啥巧妙的方法可以编辑相机预览和显示的内容吗?【英文标题】:Is there any neat way I can edit the content of camera preview and show?有什么巧妙的方法可以编辑相机预览和显示的内容吗? 【发布时间】:2017-10-16 12:21:50 【问题描述】:我想编辑相机预览流,并直接在屏幕上显示。现在我可以通过AVCaptureVideoDataOutput
获取内容,但是如何编辑它并使用编辑后的流而不是原始流呢?我已经尝试将CMSampleBuffer
转换为UIImage
并显示在UIImageView
中,速度还可以。但是我想知道是否有更好的方法来实现它。
提前致谢!
【问题讨论】:
【参考方案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 应用所需更改并将其保存到文件中。
【讨论】:
以上是关于有啥巧妙的方法可以编辑相机预览和显示的内容吗?的主要内容,如果未能解决你的问题,请参考以下文章