我想编辑相机预览流,并直接在屏幕上显示。现在我可以通过AVCaptureVideoDataOutput
获取内容,但是如何编辑它并使用编辑的流而不是原始流?我尝试将CMSampleBuffer
转换为UIImage
并在UIImageView
中显示,速度还可以。但我想知道是否有更好的方法来实现它。
提前致谢!
答案 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应用所需的更改并将其保存到文件中。