0

我正在尝试制作带有画中画的 QTMovie。我有两部电影,一部是文件中的视频,另一部是用相机录制的。

我希望相机影片显示在其他视频上方并略微透明。我可以使用 qttrack 将相机电影定位在其他视频上,但我不知道如何更改视频上 qttrack 的透明度。

这可能使用 QTKit 吗?

这是我现在的代码示例

   QTTimeRange fullMovieDuration = QTMakeTimeRange(QTZeroTime, [mCameraMovie duration]);
   QTTime startTime = QTMakeTime(0, [mCameraMovie currentTime].timeScale);

   QTTrack *cameraTrack = [[mCameraMovie tracks] objectAtIndex:0];

   NSRect newCameraRect = NSMakeRect(100, 100, 320, 240);

   [cameraTrack setAttribute:[NSValue valueWithRect:newCameraRect] forKey:QTTrackBoundsAttribute]; 

   [mMovie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
   [mMovie insertSegmentOfTrack:cameraTrack timeRange:fullMovieDuration atTime:startTime];

   [ibMovieView setMovie:mMovie];
4

1 回答 1

2

我能够使用 Quicktime 做到这一点。

这是一个完成它的类别。

标题

#import <QTKit/QTKit.h>

@interface QTTrack (QTTrack_Opacity)

-(void)setOpacity:(float)opacity;

@end

源文件

@implementation QTTrack (QTTrack_Opacity)

-(void)setOpacity:(float)opacity
{
   MediaHandler mh = GetMediaHandler([[self media] quickTimeMedia]);
   RGBColor color = { (int)(opacity*255) << 8, (int)(opacity*255) << 8, (int)(opacity*255) << 8};
   MediaSetGraphicsMode(mh, graphicsModeStraightAlphaBlend, &color);

}

@end
于 2011-09-13T12:45:50.050 回答