重叠2 QTDeviceInput在同一视图



我正在编写一个可可应用程序,可以编辑来自不同QTDeviceInputs的流媒体视频。在这一刻,我可以很容易地显示2 qtdeviceinput在2个不同的QTCaptureView,但我想知道是否有可能重叠(也许与透明度)从外部凸轮流在一个单一的视图。我必须使用哪种视图来重叠视频流?如何使这两个视频流重叠?

我想我必须使用OpenGlView,但我从未使用过它,我想知道是否有一个更简单的方法来做到这一点。


我尝试创建2个QTCaptureLayer如下:

layer1=[[QTCaptureLayer alloc]initWithSession:session1];
layer2=[[QTCaptureLayer alloc]initWithSession:session2];

其中session1session2是我用来显示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];

其中session1session2是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, maskcompositingFilter属性-取决于你想要达到的效果。

相关内容

  • 没有找到相关文章