此项目已于2019年3月停止维护,请慎重使用。
UCDLive SDK 提供的低延时、高并发的直播云服务。
AgoraRTCLive分支项目
faceUnity分支项目
- H.264硬编码
- AAC 音频硬编码
- RMTP协议直播推流
- 提供基于GPUImage的美颜滤镜,并支持调节磨皮,美白,红润度
- 支持自定义滤镜
- 动态贴纸(faceunity/kiwi等)
- 支持多分辨率设置
- 自由码率设置
- 自适应网络带宽码率调整
- 弱网丢帧策略
- 延时累积消除
- 横竖屏推流
- 支持视频镜像、非镜像操作
- 自动对焦
- 支持静音操作
- 截帧操作
- 混音效果
- 前后置摄像头动态切换
- 在线API文档支持,提供 HeaderDoc 文档
- 连麦解决方案
- 最低支持iOS版本:推流端iOS 8.0 播放端iOS7.0
- 最低支持iPhone型号:推流端iPhone 4s,播放端iPhone 4
- 支持CPU架构: armv7,arm64,i386,x86_64
- 含有i386和x86_64模拟器版本的库文件,推流功能无法在模拟器上工作,播放功能完全支持模拟器。
git clone https://github.com/umdk/UCDLive_iOS.git --depth 1
因项目包含多个SDK库,因此项目工程相对较庞大,建议使用Download Zip
下载
将lib文件夹下的Recorder直接拉到Xcode的工程中;
*Recorder文件夹中相关文件意义:
类文件 | 描述 |
---|---|
CameraServer.h | 直播推流类,包含视频数据采集和音频数据相关采集,数据推流服务器操作等 |
UCloudRecorderTypeDef.h | 直播推流所需常量及配置信息 |
libUCloudMediaRecorder.a | 直播推流静态库 |
NSString+UCloudCameraCode.h | 直播状态返回码 |
FilterManager.h/FilterManager.m | 滤镜管理器 |
Filter文件夹 | 所有滤镜库,包含美颜滤镜 |
添加libUCloudMediaRecorder.a所需引用的系统 framework,如下:
framework |
---|
VideoToolbox.framework |
CoreMedia.framework |
AVFoundation.framework |
AudioToolbox.framework |
libz.thd、 libc++.tbd |
由于iOS9引入了AppTransportSecurity(ATS)特性,要求App访问的网络使用HTTPS协议,如果不做特殊设置,http请求会失败,所以需要开发者在工程中增加设置以便可以发送http请求,如下:
在info plist中增加字段:
< key>NSAppTransportSecurity< /key>
< dict>
< key>NSAllowsArbitraryLoads< /key>
< true>
< /dict>
由于iOS10要求App使用麦克风、摄像头时,需要对相应的设备获得权限,如下:
在info plist中增加字段:
<key>NSCameraUsageDescription</key>
<string>允许此权限才能使用相机功能</string>
<key>NSMicrophoneUsageDescription</key>
<string>允许此权限才能录音</string>
此处为GPUImage在做OpenGL渲染的时候获取view的大小,而这操作并没有在主线程去实现,因此在Xcode9的Main Thread Checker
检查到并打印到控制台;对于程序本身的运行并没有影响,暂时还没有解决方案,如果觉得在调试的时候有些碍眼的话,可以:
请打开项目工程,edit scheme->Run->Diagnostics
中Runtime API Checking
选项将Main Thread Checker
选项不选中即可
添加library库: (Build Phases-->Link Binary With Libraries)
libresolv.tbd
如果出现类似的情况,请打开项目工程,edit scheme->Run->Options中GPU Frame Capture
选项更改为Disable
注:
从1.7.0升级至1.8.0时,需要注意一下几点:
lib文件夹下的Recorder库中的Filters文件夹已更换为include文件夹,需替换
连麦需要添加库链接:libresolv.tbd
CocoaPods 是针对 Objective-C 的依赖管理工具,它能够将使用类似 UCDLive SDK 的第三方库的安装过程变得非常简单和自动化,你能够用下面的终端命令来安装它:
$ sudo gem install cocoapods
为了使用 CoacoaPods 集成 UCDLive_iOS 到你的 Xcode 工程当中,你需要编写你的 Podfile
文件
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
target 'UCloudMediaRecorderDemo' do
pod 'UCDLive_iOS', :path => '../lib'
project 'UCloudMediaRecorderDemo.project'
post_install do |installer|
installer.pods_project.targets.each do |target|
puts "!!!! #{target.name}"
end
end
end`
然后,运行如下的命令:
$ pod install
或者使用CocoaPods APP执行Podfile
项目运行UCloudMediaRecorderDemo.xcworkspace
请参考 wiki 文档:UCDLive_IOS 开发指南
AgoraRTCLive分支项目
详细请参考 连麦配置。
详细请参考 UCDMediaPlayer项目。
详细请见 UCDLive_IOS 常见问题
如有问题反馈或者交流 请到https://github.com/umdk/UCDLive_iOS/issues上提交issue
版本号 | 发布日期 | 说明 |
---|---|---|
1.8.2 | 2018.10.09 | 1、更新底层推流库 2、更新播放器至1.5.5,支持播放器设置headers |
1.8.1 | 2017.12.28 | 1、增加音频降噪功能 2、修复音频双通道推流失败问题 3、修复推流中断后声音消失的问题 4、更新播放器至1.5.4,支持播放器音量调节 |
1.8.0 | 2017.09.28 | 1、升级底层连麦SDK至最新版本 2、支持多人连麦 3、推流可先开启预览后再设置推流地址 |
1.7.0 | 2017.08.22 | 1、增加连麦解决方案和美颜场景特效 2、增加推流暂停与恢复的API 3、修复输出音频电流声问题 |
1.6.4 | 2017.06.23 | 1、优化推流端滤镜,功耗更低,发热小 2、开放ip推流 3、更新1.5.2版本播放器 |
1.6.3 | 2017.05.05 | 1、增加推流本地日志输出,新增API见CameraServer.h 2、sdk外层增加对demo的友盟统计 3、播放器更新至1.5.1 |
1.6.2 | 2017.04.18 | 1、调整推流端SDK、播放器SDK体验质量采集 2、播放器SDK加入本地日志模块,更方便普通用户定位问题,具体API详见UCloudMediaPlayer.h |
1.6.1 | 2017.03.10 | 1、增加前置摄像头出去的流翻转API streamMirrorFrontFacing 2、统一rtmp发送头部,与android一致 3、修复8.1系统下的推流兼容性问题 4、播放器增加对speex音频播放支持 |
1.6.0 | 2017.01.25 | 1、全面支持bitcode(静态库体积会变大,但是不影响最终ipa的体积,bitcode只有在上传applestore后才有效果) 2、升级播放器解码内核 3、优化摄像头频繁切换时的处理 4、优化首次安装app时的cpu占用率 |
1.5.3 | 2016.12.23 | 1、增加获取当前流截图接口getStreamShot 2、优化推流鉴权校验逻辑 |
1.5.2 | 2016.12.15 | 1、播放器增加https播放的支持 2、优化前后台切换摄像头资源的使用 3、优化推流端横屏模式下的适配 4、修复推流时接听/拒绝来电的问题 5、Demo增加针对HLS播放设置不同的参数示例 6、修复8.3系统下推流时预览画面不角度不对的问题 |
1.5.1 | 2016.12.05 | 1、增加水印功能 2、增加混音功能 3、调整UI布局及文字描述 4、增加播放器delayOptimization、cacheDuration、bufferDuration、prepareTimeout、getAVFrameTimeout设置,详见UCloudMediaPlayer.h文件 |
1.5.0 | 2016.10.20 | 1、优化底层推流模块结构 2、增加 推流与服务器异常断开消息(详见UCloudRecorderTypeDef.h),sdk内部已做重连处理,外部不需要做操作 |
1.4.1 | 2016.10.14 | 1、暂时关闭降噪功能 2、UCloudMediaPlayer.h增加rtmpSubscribe属性设置来满足海外CDN播放前需要发送FCSubscribe命令的需求 3、优化后台切到前台重推流的场景 4、修复电话呼入未接通时,对方主动挂断电话后回到app推流失败的问题 |
1.4.0 | 2016.09.08 | 1、推流时加入声音降噪处理 2、播放器端优化hls播放流畅度 |
1.3.9 | 2016.08.29 | 1、提前摄像头UCloudCamera_PreviewOK消息通知; 2、调整推出去的流为预览时的垂直翻转; 3、sdk&demo增加对通知栏下拉操作的处理 |
1.3.8 | 2016.08.24 | 拆分CameraServer.h文件为CameraServer.h&UCloudRecorderTypeDef.h |
1.3.7 | 2016.08.18 | 1、调整demo重推、重播逻辑; 2、修复demo中filterValues数组在ios7下的问题 |
1.3.6 | 2016.07.29 | 更新播放器库(libUCloudMediaPlayer.a),库主要优化弱网下音频的播放体验 |
1.3.5 | 2016.07.25 | 增加重推和重播功能 |
1.3.4 | 2016.07.19 | 1、优化推流端在ios9.2上的内存占用; 2、更新播放器库,优化弱网下声音的播放问题 |
1.3.3 | 2016.07.12 | 1、调整采集时摄像头的显示模式,适配所有设备上能全屏显示无黑边; 2、增加横竖屏推流模式 |
1.3.2 | 2016.06.30 | CameraServer.h 增加UCloudCameraCode 23(推流ID已被占用)、24(推流url无法连接);播放器增加直播追赶策略 |
1.3.1 | 2016.06.23 | 1、优化推流时打开摄像头的流程; 2、增加直播推流的模拟器库版本 |
1.3.0 | 2016.06.16 | 1、修改CameraServer.h bitrate属性值的含义,抛弃以前的计算方式,改为总的音视频码率,单位为kbps,默认800kbps,详细可见ViewController.m 235行; 2、新增支持直播过程中调整码率设置; 3、新增UCloudGPUImageBeautyFilter2美颜滤镜,增加人脸边缘检测算法,磨皮效果更自然,提供磨皮、亮度、饱和度三种参数设置,可以在直播过程中动态调整美颜效果 |
1.2.9 | 2016.06.07 | 修复iphone6s推流有噪音的问题,增加推流时静音功能、手电筒功能,调整按钮布局、按钮文字描述 |
1.2.8 | 2016.05.19 | 增加美颜滤镜开关,showMediaPlayer方法增加了urltype参数 |
1.2.7 | 2016.05.04 | sdk内部增加对摄像头麦克风权限的获取校验,处理特定场景下播放与推流渲染的问题,优化对蓝牙设备、耳机、扬声器的切换处理 |
1.2.6 | 2016.04.26 | 推流界面增加更多推流信息,优化推流时前台后台切换的问题 |
1.2.5 | 2016.04.21 | 修改推流界面,增加debug信息 |
1.2.1 | 2016.03.11 | 优化推流稳定性、优化demo体验、优化demo的滤镜效果预览流畅度、实时性 |
1.1.1 | 2016.01.20 | 加入滤镜功能 |
1.0.0 | 2015.12.30 | 文档初稿,基础推流功能,自定义宽高、帧率、比特率 |