libksygpulive 3.0.4

libksygpulive 3.0.4

测试已测试
Lang语言 Obj-CObjective C
许可证 未知
发布最后发布2018年7月

Franken Zengpengbinsshixuemeimayudong维护。



  • ksyun

KSY Live iOS SDK

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 推流功能

  • AAC音频编码(支持软、硬件编解码)
  • H.264视频编码(支持软、硬件编解码,支持基准/主/高清晰度配置)
  • H.265视频软件编解码器
  • H.264视频编码(支持软编码H.264/H.265,支持硬件编解码H.264(支持基准/主/高清晰度配置))
  • 多分辨率编码支持
  • 摄像头控制(方向、闪光灯、前后摄像头)
  • 摄像头控制(可以调用原生的系统API)
  • 用户可自由设定音视频码率
  • 根据网络带宽自适应调整视频码率,网络自适应模式可配置
  • 支持RTMP协议直播推流
  • 提供两种层次的API:简单易用的kit类API和灵活的组件化API,提供开源的kit类代码
  • 能够与GPUImage无缝集成
  • 提供GPU实现的内置美颜滤镜
  • 支持背景音乐播放
  • 支持混音
  • 支持视频动态推流开关/纯音频推流
  • 支持后台推流
  • 支持earphone return(耳返)
  • 支持画中画推流
  • 支持预览和采集分辨率分别设置,支持任意分辨率
  • 支持第三方连麦
  • 场景编码
  • 支持软、硬件编解码的性能编码模式
  • 支持预览和推流分别镜像
  • 在线API文档支持
  • 支持边推边录,在直播推流过程中同时保存录像文件
  • 支持立体声推流(双声道)
  • 支持涂鸦推流
  • 支持桌面录制、手游直播

1.3 播放特点

  • 与系统播放器MPMoviePlayerController接口一致,可以无缝快速切换至KSYMediaPlayer;
  • 支持本地全媒体格式,并对主流的媒体格式(mp4, avi, wmv, flv, mkv, mov, rmvb 等)进行优化;
  • 支持广泛的流式视频格式,如HLS, RTMP, HTTP伪流式等;
  • 低延时直播体验,配合金山云推流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 集成时的注意事项

  • 本框架已包含播放SDK
    且会与播放SDK产生冲突,在集成前,请先确保将之前集成的KSY播放SDK移除。
  • 本框架可能与其他使用了FFmpeg的静态库冲突(冲突时可以考虑使用动态库)。
  • 本框架为静态库,虽然库的大小为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 联系方式

金山云计算