我正在编写一个可可应用程序,可以编辑来自不同QTDeviceInputs的流媒体视频。在这一刻,我可以很容易地显示2 qtdeviceinput在2个不同的QTCaptureView,但我想知道是否有可能重叠(也许与透明度)从外部凸轮流在一个单一的视图。我必须使用哪种视图来重叠视频流?如何使这两个视频流重叠?
我想我必须使用OpenGlView,但我从未使用过它,我想知道是否有一个更简单的方法来做到这一点。
我尝试创建2个QTCaptureLayer
如下:
layer1=[[QTCaptureLayer alloc]initWithSession:session1];
layer2=[[QTCaptureLayer alloc]initWithSession:session2];
其中session1
和session2
是我用来显示2 QTDeviceInput
的2 QTCaptureSession
。然后我在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没有改变!我做错了什么?
如果我正确理解你的问题,就没有必要诉诸OpenGLView:
有一个叫做QTCaptureLayer
的类,它应该能让你实现你想要的。然后,您所需要的是一个NSView
,它由一个层支持,您可以将捕获层作为子层添加到该层。
对于混合和类似的目的,你可以使用捕获层的opacity
, mask
或compositingFilter
属性-取决于你想要达到的效果。