我正在编写一个可以编辑来自不同QTDeviceInputs的流视频的可可应用程序。 此时我可以在2个不同的QTCaptureView中轻松显示2个QtDeviceInput,但我想知道是否可以在单个视图中重叠(可能具有透明度)来自外部凸轮的流。 我必须使用哪种视图来重叠视频流? 我如何重叠这两个视频流?
我想我必须使用OpenGlView,但我从未使用它,我想知道是否有更简单的方法。
我尝试按照以下方式创建2 QTCaptureLayer
:
layer1=[[QTCaptureLayer alloc]initWithSession:session1];
layer2=[[QTCaptureLayer alloc]initWithSession:session2];
其中session1
和session2
为2 QTCaptureSession
,我用它来显示2 QTDeviceInput
。
比我在NSView
:
[[myView layer] addSublayer:layer1];
但没有改变。我在界面构建器中创建了NSView“myView”,并将其链接到文件的所有者。 我还尝试绘制一个简单的CALayer并将其添加到myView:
CALayer *layer = [CALayer layer];
layer.backgroundColor = CGColorCreateGenericRGB(0,0,0,1.0f);
layer.borderColor=CGColorCreateGenericRGB(100,100,100,1.0f);
layer.borderWidth=4.0;
NSRect rect = NSMakeRect(0, 0, 1000, 1000);
layer.frame = NSRectToCGRect(rect);
layer.cornerRadius = rect.size.height/5;
// Insert the layer into the root layer
[[myView layer] addSublayer:layer];
但没有发生任何事。 NSView没有变化!我做错了什么?
我尝试按照以下方式创建2 QTCaptureLayer
:
layer1=[[QTCaptureLayer alloc]initWithSession:session1];
layer2=[[QTCaptureLayer alloc]initWithSession:session2];
其中session1
和session2
为2 QTCaptureSession
,我用它来显示2 QTDeviceInput
。
比我在NSView
:
[[myView layer] addSublayer:layer1];
但没有改变。我在界面构建器中创建了NSView“myView”,并将其链接到文件的所有者。 我还尝试绘制一个简单的CALayer并将其添加到myView:
CALayer *layer = [CALayer layer];
layer.backgroundColor = CGColorCreateGenericRGB(0,0,0,1.0f);
layer.borderColor=CGColorCreateGenericRGB(100,100,100,1.0f);
layer.borderWidth=4.0;
NSRect rect = NSMakeRect(0, 0, 1000, 1000);
layer.frame = NSRectToCGRect(rect);
layer.cornerRadius = rect.size.height/5;
// Insert the layer into the root layer
[[myView layer] addSublayer:layer];
但没有发生任何事。 NSView没有变化!我做错了什么?
答案 0 :(得分:0)
如果我正确理解您的问题,则无需使用OpenGLView:
有一个名为QTCaptureLayer
的课程,可以帮助您实现自己想要的目标。您所需要的只是一个由NSView
支持的图层,您可以将捕获图层添加为子图层。
对于混合和类似用途,您可以使用捕获图层'opacity
,mask
或compositingFilter
属性 - 具体取决于您想要达到的效果。