Skip to content

BrushStream

Franken Zeng edited this page Jul 7, 2017 · 12 revisions

画笔推流(涂鸦推流)

1. 使用场景

在直播过程中,主播使用画笔画出任意文字、图形等,通过与摄像头画面合成后,再一起推送给观众端,该功能从v2.4.0版本引入

1.1 效果演示

  • 左侧手机是主播端
  • 右侧手机是播放端

主播端在页面上涂鸦,观众看到的就是带涂鸦的画面。涂鸦内容于主播画面已经完成了叠加,无需其他传输渠道。无论移动端、flash等播放器,看到的涂鸦画面完全一致。

画笔演示

2. 使用示例

  • 先构造kit类的实例
KSYGPUBrushStreamerKit * brushKit = [[KSYGPUBrushStreamerKit alloc] initWithDefaultCfg];

KSYGPUBrushStreamerKit继承KSYGPUStreamerKit类,在KSYGPUStreamerKit的基础上添加了一个画笔图层drawLayer和画笔图层的显示位置drawPicRect

2.1 构建画笔图层并画图

//构建图层
_drawView = [[KSYDrawingView alloc] initDraw:_drawViewRect];
_drawView.frame = _drawViewRect;
//图层边框颜色和大小
[_drawView.layer setBorderColor:[[UIColor blueColor] CGColor]];
[_drawView.layer setBorderWidth:2.0f];
//加载图层
[self.view addSubview:_drawView];
//利用UIBezierPath和画图
@property (nonatomic, strong) UIBezierPath *path;
//画图起点
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
//画线
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;

KSYDrawingView是我们定义的一个简单画笔图层演示类,用户可以根据画图需求自己来定义

2.2 添加推流画笔图层

UIImage * img = [self imageFromUIView:_drawView];
_drawPic = [[GPUImagePicture alloc] initWithImage:img];
[self addDrawPic:_drawPic ToMixerAt:_drawLayer];
[_drawPic processImage];

将画笔图层作为推流的一个新图层,利用定时器NSTimer来刷新画笔图层

2.3 启动采集

[brushKit startPreview:self.view];

2.4 启动推流

NSString *rtmpSrv  = @"rtmp://test.uplive.ksyun.com/live/888";
NSURL* _hostURL = [[NSURL alloc] initWithString:rtmpSrv];
[brushKit.streamerBase startStream:_hostURL];

2.5 停止推流

[brushKit.streamerBase stopStream];

2.6 停止采集

[brushKit stopPreview];

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally