0

さまざまな QTDeviceInputs からのストリーミング ビデオを編集できるココア アプリをプログラミングしています。現時点では、2 つの異なる QTCaptureView で 2 つの QtDeviceInput を簡単に表示できますが、1 つのビューで外部カムからのストリームを (おそらく透過性を使用して) 重ねることができるかどうか疑問に思います。ビデオ ストリームをオーバーラップさせるには、どのような種類のビューを使用する必要がありますか? これら 2 つのビデオ ストリームをオーバーラップするにはどうすればよいですか?

私は OpenGlView を使用する必要があると思いますが、使用したことがないので、もっと簡単な方法があるのだろうかと思います。


私は次のように2を作成しようとしましたQTCaptureLayer

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

wheresession1session2are 2QTCaptureSessionを表示するために 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];

wheresession1session2are 2QTCaptureSessionを表示するために 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 は変更されていません。私が間違っていることは何ですか?

4

1 に答える 1

0

あなたの問題を正しく理解していれば、OpenGLView に頼る必要はありません。

QTCaptureLayerあなたが望むものを達成できるようにする必要があるというクラスがあります。必要なのは、NSViewキャプチャレイヤーをサブレイヤーとして追加できるレイヤーに支えられていることだけです。

ブレンドや同様の目的で、達成したい効果に応じて、キャプチャレイヤーのopacitymaskまたはプロパティを使用できます。compositingFilter

于 2011-08-19T04:51:10.860 に答える