Skip to content
pengbin edited this page Sep 14, 2016 · 20 revisions

推流SDK使用指南

基本概念介绍

KSYStreamer 主要提供了在iOS设备上音视频从采集,处理,压缩,到推流和预览等各个环节的功能。

  • 采集: 对摄像头和麦克风的配置和操作,将视频和音频数据的提供给后续的环节;
  • 处理: 对音视频数据的处理,包括对图像的美颜处理,和音频的混音,美音等,为可选环节;
  • 压缩: 对音视频数据的压缩(编码);
  • 推流: 通过RTMP协议发送到媒体服务器;
  • 预览: 使用GPUImageView将处理后的图像显示在UI上

以上每个环节都提供了独立的组件化的API,可由用户单独使用或者自由组合
(压缩和推流目前作为核心功能,打包在KSYStreamerBase类中)

还提供了将所有组件API拼装串联后的kit类API, 可以快速上手使用, 也可以参考kit类的源码, 依据自己的需要进行组装。

系统框图

一个完整的推流功能的系统框图如下:
Diagram

其中,KSYGPUStreamerKit类为提供的组装好的帮助类,内部实现了各个组件的创建和链接,但是仍然可以获取到内部的各个组件进行控制。 以下先列出各个类的简单说明,详细介绍请参考API引用手册。

  • 数据源
    • KSYGPUCamera: 封装了对摄像头的操作,能够将采集到的原始视频图像数据回调给用户
    • KSYAUAudioCapture: 提供纯音频采集的操作,能够将采集到的原始音或者经过混响处理后的数据回调给用户
    • KSYBgmPlayer: 提供了对背景音乐播放的操作,并将被播放的音频数据通过回调送出来
    • KSYMoviePlayer: 金山云的播放器, 可以播放本地的视频文件, 将声音和图像跟采集的进行混合
    • KSYGPUYUVInput: 起衔接作用,将YUV格式的图像数据上传到GPU中
    • GPUImagePicture: 读取本地图像,上传GPU的类
  • 数据处理
    • KSYGPUXXXFilter: 为一组接口类,提供不同的美颜处理效果
    • GPUImageFilter: 为第三方库GPUImage提供的滤镜,可根据需要选择,多个滤镜可以串联使用
  • 数据混合叠加
    • KSYGPUPicMixer: 提供图像混合功能, 主要用于将不同的图层叠加成一幅图像
    • KSYAudioMixer: 提供混音功能,主要用于将不同来源的音频混合成一路,通过回调将混合后的音频送出
    • KSYGPUPicOutput:为适配GPUImage到推流的类,负责将GPU上的图像送入KSYStreamerBase进行压缩和推流
  • KSYStreamerBase: 为基础推流类,封装了压缩和RTMP推流的功能,将送入的图像和音频压缩好之后
  • GPUImageView: 第三方库GPUImage提供的预览视图
  • KSYGPUStreamerKit: 作为简易接口,封装了以上各个组件的创建和连接工作,屏蔽了组合的细节,但是稍微牺牲了一些灵活性。

简易接口使用流程说明

KSYGPUStreamerKit 能够满足一般直播应用场景的需求,主要的使用过程如下图所示:
SEQ

上图中,左侧的部分为直播推流的主干环节,右侧的部分为在推流过程中,本SDK提供的一些特色功能。

在主干环节中, 推流的开始和结束需要被包括在采集的开始和结束内,就是说必须先开启采集,才能开启推流。 采集和推流的参数大部分需要在启动前设置完毕,少部分参数可以在推流过程中改变,详细情况请参阅采集和推流参数的说明。

直播推流各个环节的说明

直播过程中的其他功能说明

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