0

我正在编写一个可可应用程序,它可以编辑来自不同 QTDeviceInputs 的流媒体视频。此时我可以轻松地在 2 个不同的 QTCaptureView 中显示 2 个 QtDeviceInputs,但我想知道是否可以在单个视图中重叠(可能具有透明度)来自外部摄像头的流。我必须使用哪种视图来重叠视频流?我如何重叠这两个视频流?

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


我尝试QTCaptureLayer按如下方式创建 2:

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

wheresession1session2are 2QTCaptureSession我用来显示 2 QTDeviceInput。比我在 a 添加图层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 没有改变!我做错了什么?


我尝试QTCaptureLayer按如下方式创建 2:

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

wheresession1session2are 2QTCaptureSession我用来显示 2 QTDeviceInput。比我在 a 添加图层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 没有改变!我做错了什么?

4

1 回答 1

0

如果我正确理解您的问题,则无需求助于 OpenGLView:

有一个类叫它QTCaptureLayer应该使你能够实现你想要的。然后,您所需要的只是NSView一个层,您可以将捕获层作为子层添加到该层。

opacity然后,对于混合和类似目的,您可以使用 capture-layers'maskcompositingFilterproperties — 取决于您想要实现的效果。

于 2011-08-19T04:51:10.860 回答