如何更改QTTrack的不透明度

时间:2011-09-08 21:26:07

标签: objective-c macos qtkit

我正在尝试用画中画制作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];

1 个答案:

答案 0 :(得分: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