Skip to content
pengbin edited this page Oct 9, 2017 · 20 revisions

推流SDK使用指南

基本概念介绍

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

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

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

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

系统框图

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

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

  • 数据源
    • KSYAVFCapture: 封装了对摄像头的操作,能够将采集到的原始视频图像数据回调给用户
    • KSYAUAudioCapture: 提供纯音频采集的操作,能够将采集到的原始音或者经过混响处理后的数据回调给用户
    • KSYBgmPlayer: 简单的背景音乐播放器,将背景音乐的音频数据通过回调送出来, 插着耳机也能将背景音乐送到观众端
    • KSYMoviePlayer: 金山云的播放器, 可以播放本地或在线音视频文件, 将声音和图像跟采集到的进行混合
    • KSYGPUPicInput: 起衔接作用,将BGRA/NV12/I420格式的图像数据上传到GPU中, 支持裁剪和缩放
    • GPUImagePicture: 读取本地图像,上传GPU的类
  • 数据处理
    • KSYGPUXXXFilter: 为金山云内置的一组滤镜,提供不同的美颜和特效处理
    • GPUImageFilter: 为第三方库GPUImage提供的滤镜,可根据需要选择,多个滤镜可以串联使用
  • 数据混合叠加
    • KSYGPUPicMixer: 提供图像混合功能, 主要用于将不同的图层叠加成一幅图像, 可用于添加水印图片,文字等
    • KSYAudioMixer: 提供混音功能,主要用于将不同来源的音频混合成一路,通过回调将混合后的音频送出
    • KSYGPUPicOutput:为适配GPUImage到推流的类,负责将GPU上的图像导出到内存中, 支持BGRA/NV12/I420等常见格式, 支持裁剪和缩放
  • KSYStreamerBase: 为基础推流类,封装了压缩和RTMP推流的功能,将送入的图像和音频压缩好之后,完成推流
  • KSYGPUView: 基于第三方库GPUImage实现的预览视图,可以接在滤镜后面, 将滤镜处理后的内容显示在试图上
  • KSYGPUStreamerKit: 作为简易接口,封装了以上各个组件的创建和连接工作,屏蔽了组合的细节,但是稍微牺牲了一些灵活性。

简易接口使用流程说明

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

  • 创建 KSYGPUStreamerKit的实例
  • 在ViewController 中注册消息通知, 响应采集, 推流, 背景音乐播放的状态变化, 并响应
  • 配置采集参数, 比如分辨率和帧率等
  • 开始采集和预览, kit类将预览的视图插入到输入view的最底层 (使用非全屏的view也是合法的)
  • 配置推流参数, 比如音视频的码率等
  • 开始推流 / 结束推流
  • 结束预览
  • 注销消息通知

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

推流SDK使用指南

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

6. DEBUG信息说明

7. 在线API文档

8. FAQ

9. 联系我们

金山云计算

Clone this wiki locally
You can’t perform that action at this time.