/KSYLive_iOS

金山云直播SDK [ iOS推流+播放 ]融合版 支持美颜滤镜(Beauty Filter)、美声(Beauty Voice)、软硬编(Software/Hardware Encoder) 、网络自适应(Network Auto Adapt)、混音(Audio Mixer)、混响(Reverb)、画中画(PIP)

Primary LanguageObjective-C

Apps UsingDownloads

Apps Using Downloads

Build Status Latest release CocoaPods platform CocoaPods version CocoaPods version

Source Type: Binary SDK
Charge Type: free of charge

阅读对象

本文档面向所有使用金山云直播SDK的开发、测试人员等, 要求读者具有一定的iOS编程开发经验,并且要求读者具备阅读wiki的习惯。

|live_1.png|live_1.png|live_1.png|

|live_4.png|live_5.png|

一. 功能特性

金山云直播SDK是金山云提供的直播解决方案的一部分,完成了iOS端音视频数据采集、处理、推流和播放的工作。

金山云直播SDK不限制用户的推流、拉流地址。用户可以只使用金山云直播SDK而不使用金山云的云服务。

金山云直播SDK不收取任何授权使用费用,不含任何失效时间或者远程下发关闭的后门。同时金山云直播SDK也不要求ak/sk等鉴权,没有任何用户标识信息。

金山云直播SDK提供了业内一流的H.265编码、解码能力,H.265能力也是免费使用,欢迎集成试用。

金山云直播SDK当前未提供开源代码,如果需要其他定制化开发功能,请通过金山云商务渠道联系。

1.1 关于热更新

金山云SDK保证,提供的金山云直播SDK未使用任何热更新技术,例如:RN(ReactNative)、weex、JSPatch等,请放心使用。

1.2 推流功能

1.3 播放特点

  • 与系统播放器MPMoviePlayerController接口一致,可以无缝快速切换至KSYMediaPlayer;
  • 本地全媒体格式支持, 并对主流的媒体格式(mp4, avi, wmv, flv, mkv, mov, rmvb 等 )进行优化;
  • 支持广泛的流式视频格式, HLS, RTMP, HTTP Pseudo-Streaming 等;
  • 低延时直播体验,配合金山云推流sdk,可以达到全程直播稳定的4秒内延时;
  • 实现快速满屏播放,为用户带来更快捷优质的播放体验;
  • 版本适配支持iOS 7.0以上版本;
  • 业内一流的H.265解码;
  • 小于2M大小的超轻量级直播sdk;

1.4 文档

详情请见wiki

1.4 关于热更新

金山云SDK保证,提供的KSYLive iOS直播SDK未使用热更新技术,例如:RN(ReactNative)、weex、JSPatch等,请放心使用。

1.5 关于费用

金山云SDK保证,提供的KSYLive iOS直播SDK可以用于商业应用,不会收取任何SDK使用费用。但是基于KSYLive iOS直播SDK的其他商业服务,会由特定供应商收取授权费用,大致包括:

  1. 云存储
  2. CDN分发
  3. 动态贴纸
  4. 连麦
  5. 第三方美颜

二. 推流端大事记

2.1 2016年发布大事记  

  1. 2016.02.25 上行网络自适应上线;
  2. 2016.03.26 内建美颜上线;
  3. 2016.04.11 支持四种混响模式的美声上线;
  4. 2016.05.18 耳返上线;
  5. 2016.06.12 画中画推流上线;
  6. 2016.06.27 支持短视频录制;
  7. 2016.08.24 支持纯音频推流,支持后台推流,支持视频动态发送开关;
  8. 2016.08.31 场景编码,有效提升直播画质;
  9. 2016.09.07 内建新美颜上线;
  10. 2016.09.12 kit类顶层代码开源, podspec 中将集成framework改为集成静态库
  11. 2016.09.21 特效滤镜上线;
  12. 2016.09.26 双人连麦稳定版本上线;
  13. 2016.09.28 视频硬编性能编码模式上线。音频AAC硬编功能上线。网络自适应场景上线;
  14. 2016.10.19 支持推流横竖屏动态变化
  15. 2016.10.20 支持replaykit录屏推流
  16. 2016.11.18 支持边推流边录制为mp4文件
  17. 2016.2.22 支持动态帧率
  18. 2016.3.1 支持主播音频采集变声
  19. 2017.3.14 支持立体声推流
  20. 2017.5.16 支持涂鸦推流
  21. 2017.7.7 支持桌面录制、手游直播
  22. 2017.7.7 支持iOS 11 HEVC 硬编推流
  23. 2017.8.3 支持采集降噪

2.2 近期工作  

  1. 2017.03.xx 多视角直播;
  2. 2017.03.xx 背景音降噪;

三. SDK集成方法介绍

3.1 系统要求

  • 最低支持iOS版本:iOS 7.0
  • 最低支持iPhone型号:iPhone 4
  • 支持CPU架构: armv7,armv7s,arm64(和i386,x86_64模拟器)
  • 含有i386和x86_64模拟器版本的库文件,推流功能无法在模拟器上工作,播放功能完全支持模拟器。

3.2 下载工程

本SDK 提供如下列出获取方式:

3.2.1 从github clone

目录结构如下所示:

  • demo : demo工程为KSYLive ,演示本SDK的主要接口的使用
  • doc/docset : appleDoc风格的接口文档,安装后可在xcode中直接看到方法和属性的文档
  • doc/html : appleDoc风格的网页版接口文档,也可查看在线版
  • prebuilt : 预编译库的头文件和库文件
  • source : 顶层kit类的源代码
  • releaseFramework: 用于将预编译库打包为方便集成的framework的脚本和工程
$ git clone https://github.com/ksvc/KSYLive_iOS.git KSYLive_iOS --depth 1

3.2.2 从bitbucket clone

对于部分地方访问github比较慢的情况,可以从bitbucket clone,获取的库内容和github一致。

$ git clone https://bitbucket.org/ksvc/ksylive_ios.git  --depth 1

3.2.3 使用Cocoapods 进行安装

通过Cocoapods 能将本SDK的静态库和代码下载到本地,只需要将类似如下语句中的一句加入你的Podfile:

pod 'libksygpulive/KSYGPUResource'
pod 'libksygpulive/libksygpulive'

执行 pod install即可.

其中, 第一段libksygpulive为SDK名,第二段KSYGPUResource和libksygpulive为子模块名

本SDK提供了多个不同的子模块以满足不同用户的需求:

  • KSYMediaPlayer     : 用于直播的播放内核(支持格式精简)
  • KSYMediaPlayer_vod : 用于点播的播放内核(支持格式丰富)
  • libksygpulive     : 用于直播推流和播放的SDK(直播推流功能和精简版本的播放SDK)
  • libksygpulive_265 : 用于直播推流和播放的SDK (支持265推流和精简版本的播放SDK)
  • KSYGPUResource     : 直播推流用到的资源文件, 主要用于美颜和特效滤镜
Pod依赖进阶
  • 本地开发版 (sdk clone或下载到本地后)
pod 'libksygpulive/libksygpulive', :path => '../'  
  • 直接指定SDK的github仓库地址和版本号
pod 'libksygpulive/libksygpulive', :git => 'https://github.com/ksvc/KSYLive_iOS.git', :tag => 'v1.8.0'
  • 从cocoapod官方库Trunk获取spec, 从github下载sdk
pod 'libksygpulive/libksygpulive'
  • 从cocoapod官方库Trunk获取spec, 从金山云存储 ks3 下载sdk (国内速度较快)
pod 'libksygpulive_ks3/libksygpulive'
  • 如果pod install 时出现无法找到specification的提示, 请先更新repo
pod repo update
  • 注意1: 不能将以上语句都加入Podfile, 他们作用是一样的, 只是Podspec读取位置不同.

3.2.4 GPUImage依赖

请参考官方cocoapods提供的GPUImage,当前我们测试通过的版本是0.1.7

3.3 开始运行demo工程

!!!!!注意: 这里提供以下两种方法运行demo, 但是只能二选一; 如果要换另一种方法请重新下载解压, 或恢复git仓库的原状后再尝试.!!!!!

3.3.1 使用Cocoapod的的方式来运行demo

demo 目录中已经有一个Podfile, 指定了本地开发版的pod
在demo目录下执行如下命令, 即可开始编译运行demo

$ cd demo
$ pod install
$ open KSYLiveDemo.xcworkspace

注意:

  1. 更新pod之后, 需要打开 xcwrokspace, 而不是xcodeproj

3.3.2 手动编译framework生成依赖项运行示例demo

  • 将SDK 打包为framework

将压缩包解压(或者clone成功)后, 进入 releaseFramework 目录, 通过 release-libKSYLive.sh 下载依赖项并打包出framework,生成到KSYLive_iOS/framework/static目录下。

$ cd releaseFramework
$ ./release-libKSYLive.sh libksygpulive lite
$ ls ../framework/static
Bugly.framework  GPUImage.framework  libksygpulive.framework

参数的详细说明请参考脚本release-libKSYLive.sh的帮助(./release-libKSYLive.sh -h)或动态库第4点说明.

Bugly.framework 是为了收集demo的崩溃信息用的(仅仅demo里用到). 集成SDK到用户项目中时,不依赖Bugly.

  • 给demo添加库依赖选项

打开demo目录下的KSYLiveDemo.xcodeproj, 修改KSYLiveDemo项目的配置文件:
选中KSYLiveDemo工程->选中Project KSYLiveDemo->选中 Info 标签->选择Configurations->Debug或Release->给KSYLiveDemo分别选择对应的KSYLiveDemo-framework.xcconfig文件。注意,如果使用动态库则选择KSYLiveDemo-dy-framework.xcconfig。

xcode_configs

或者手动在项目配置中添加如下参数: (具体请参见 demo目录下的 KSYLiveDemo-framework.xcconfig)

OTHER_LDFLAGS = $(inherited) -ObjC -all_load -framework libksygpulive -framework GPUImage -framework Bugly -lstdc++.6 -lz
FRAMEWORK_SEARCH_PATHS = $(inherited) ../framework/ ../framework/static

以上为静态库的集成方法,动态库的配置使用方法请参考Wiki中动态库相关内容。

3.4 添加头文件到需要使用本SDK的文件中

#import <GPUImage/GPUImage.h>
#import <libksygpulive/KSYGPUStreamerKit.h>

以上两个头文件都是需要引入的:

  • GPUImage.h是因为依赖第三方framework需要引入的

  • KSYGPUStreamerKit.h 为开放的顶层kit类, kit类可以直接使用, 也可以自行修改

  • 当需要自定义修改GPUImage时,GPUImage的版本要求是0.1.7

3.5 SDK版本号查询

本SDK的版本号 主要通过核心类查询

NSLog(@"version: %@", [streamerBase getKSYVersion]);
NSLog(@"version: %@", [kit getKSYVersion]);

3.6 集成时的注意事项

  • 本framework已经包含播放SDK
    且会跟播放SDK产生冲突,在集成前,请先保证将之前集成的KSY播放SDK移除
  • 本framework可能与其他使用了FFmpeg的静态库冲突 (冲突时可以考虑使用动态库)
  • 本framework为静态库,虽然库的大小为20M+,但是最后链接后,对app的增量只有5M+
  • 如果使用cocoapod官方库Trunk时,发现找不到最新版本的库, 需要先执行如下命令, 更新spec库
pod repo update

四. 参考文档

五. 播放器使用示例

请见github库:https://github.com/ksvc/KSYMediaPlayer_iOS.git

六. 反馈与建议

6.1 反馈模板

类型   描述
SDK名称 KSYLive_iOS
SDK版本 v2.5.0
设备型号 iphone7
OS版本 iOS 10
问题描述 描述问题出现的现象
操作描述 描述经过如何操作出现上述问题                    
额外附件 文本形式控制台log、crash报告、其他辅助信息(界面截屏或录像等)

6.2 联系方式

金山云计算