-
Notifications
You must be signed in to change notification settings - Fork 6
picMixer
shixuemei edited this page Nov 17, 2017
·
1 revision
直播推流时, 可能会有叠加水印, 叠加文字, 叠加背景图片等需求。
SDK中提供了 UnionGPUPicMixer 作为一个抽象的图层混合工具,提供如下功能:
- 将多个图层的内容进行叠加, 每个图层用index[0~n] 作为标示
- 叠加顺序为0层在最下层, index越大在更上层
- 可以每个图层分别指定位置和大小
- 可以每个图层分别制定透明度
- 可以动态交换图层
- 可以动态刷新图层内容(支持视频)
- 输出的刷新率 与 masterLayer 保持一致
- 创建图层混合对象
- (id)initWithOutputSize:(CGSize)sz;
- 设置主要图层
@property (nonatomic, assign) NSUInteger masterLayer;
- 设置图层的位置和大小
-(void)setPicRect: (CGRect) rect
ofLayer: (NSInteger) idx;
- 设置图层透明度
-(void)setPicAlpha: (CGFloat) alpha
ofLayer: (NSInteger) idx;
- 设置图层旋转
-(void)setPicRotation: (GPUImageRotationMode) rotation
ofLayer: (NSInteger) idx;
- 清除特定图层的画面内容
-(void)clearPicOfLayer:(NSInteger) index;
UnionGPUPicMixer 本质上是一个多输入的GPUImageFilter, 使用方法, 就是将其作为target 添加到数据源中。 数据源可以是GPUImagePicture, Camera, 或者其他GPUImageFilter。 使用实例可以参考kit类代码。下面是一个简单的示例:
_vMixer = [[UnionGPUPicMixer alloc] initWithOutputSize:CGSizeMake(540, 960)];
_vMixer.masterLayer = 0;
[_capDev addTarget:_vMixer atTextureLocation:0];
[_pic addTarget:_vMixer atTextureLocation:1];
[_yuvIn addTarget:_vMixer atTextureLocation:2];
[_vMixer setPicRect: CGRectMake(0.0, 0.0, 0.5, 0.5) ofLayer:0];
[_vMixer setPicRect: CGRectMake(0.2, 0.2, 0.5, 0.5) ofLayer:1];
[_vMixer setPicRect: CGRectMake(0.5, 0.5, 0.5, 0.5) ofLayer:2];
[_vMixer setPicAlpha:0.5 ofLayer:0];
[_vMixer setPicAlpha:0.8 ofLayer:1];
[_vMixer addTarget:_preview];