Skip to content

UPYUN 直播 SDK。播放器、采集器、推流器统一集成,功能完备接口简练,可以快速安装使用。采集与音视频处理模块开源,灵活性强可以满足复杂定制需求。UPYUN 直播平台一站式服务:http://docs.upyun.com/live/

Notifications You must be signed in to change notification settings

upyun/ios-live-sdk

Repository files navigation

又拍云 iOS 直播 SDK(动态库) 使用说明

注: 从4.0.0 版本之后 SDK 改为了动态库形式.

1 SDK 概述

SDK 包含推流和拉流两部分,支持美颜滤镜、水印、连麦等全套直播功能。
50 行代码即可开始直播,结合 UPYUN直播平台 可以快速构建直播应用。

UPYUN 直播平台自主配置流程

2 SDK使用说明

2.1 运行环境和兼容性

UPLiveSDKDll.framework 支持 iOS 8 及以上系统版本;
支持 ARMv7ARM64 架构。请使用真机进行开发和测试。

UPLiveSDKDll.framework 接口支持 Swift 3 调用,参考 DemoSwift3

2.2 安装使用说明

手动安装方法:

直接将 UPLiveService文件夹拖拽到目标工程目录。

//文件结构:

UPLiveService 文件夹
├── GPUImage                 //视频处理依赖第三方库 GPUImage  
├── UPAVCapturer             //UPAVCapturer 音视频采集模块, 直播接口。
└── UPLiveSDKDll.framework   //framework 包含播放器`UPAVPlayer`和推流器`UPAVStreamer`

2.3 工程设置:

TARGET -> Build Settings -> Enable bitcode: 设置为 NO

TARGET -> General -> Embedded Binaries: 添加选择 UPLiveSDKDll.framework

注: 如果需要 app 退出后台仍然不间断推流直播,需要设置 TARGET -> Capabilities -> Backgroud Modes:ON √ Audio, AirPlay,and Picture in Picture

2.4 工程依赖:

AVFoundation.framework

QuartzCore.framework

OpenGLES.framework

AudioToolbox.framework

VideoToolbox.framework

Accelerate.framework

libbz2.1.0.tbd

libiconv.tbd

libz.tbd

CoreMedia.framework

CoreTelephony.framework

SystemConfiguration.framework

libc++.tbd

CoreMotion.framework

注: 此 SDK 已经包含 FFMPEG 3.0 , 不建议自行再添加 FFMPEG 库 , 如有特殊需求, 请联系我们

3 功能特性

3.1 推流端功能特性 (采集器 + 推流器)

  • 音频编码:AAC

  • 视频编码:H.264

  • 支持音频,视频硬件编码

  • 推流协议:RTMP

  • 支持前后置摄像头切换

  • 支持目标码率设置

  • 支持拍摄帧频设置

  • 支持美颜滤镜

  • 支持横屏拍摄

  • 支持单音频推流

  • 支持静音推流

  • 支持连麦推流

3.2 播放端功能特性 (播放器)

  • 支持播放直播源和点播源,支持播放本地视频文件。

  • 支持视频格式:HLS, RTMP, FLVmp4 等视频格式

  • 播放器支持单音频流播放,支持 speex 解码,可以配合浏览器 Flex 推流的播放

  • 低延时直播体验,配合又拍云推流 SDKCDN 分发, 可以达到全程直播稳定在 2-3 秒延时

  • 支持设置窗口大小和全屏设置

  • 支持音量调节,静音设置

  • 支持亮度调整

  • 支持缓冲大小设置,缓冲进度回调

  • 支持自动音画同步调整

4 SDK下载

Demo 下载: https://github.com/upyun/ios-live-sdk

5 使用示例

具体使用示例,请参考 demo 工程的 基础使用示例 部分,50行代码 即可以�开启�直播和播放。 高级设置和使用请参考 demo 工程的 高级设置使用示例 部分。

5.1 推流使用示例 UPAVCapturer

使用拍摄和推流功能需要引入头文件 #import "UPAVCapturer.h"UPAVCapturer 负责采集视频再经过 UPAVStreamer 进行推流直播,UPLiveSDKDll.framework中的推流器 UPAVStreamer也可以单独使用。UPAVStreamer可以配合任何采集器来推流原始或压缩的音视频数据。

    //1. 设置预览画面
    UIView *livePreview = [[UPAVCapturer sharedInstance] previewWithFrame:self.view.bounds
                                                              contentMode:UIViewContentModeScaleAspectFit];
    //2. 将预览画面添加到 view
    [self.view insertSubview:livePreview atIndex:0];
    
    //3. 设置代理,接收直播状态回调
    [UPAVCapturer sharedInstance].delegate = self;
    
    //4. 设置推流地址
    [UPAVCapturer sharedInstance].outStreamPath = [NSString stringWithFormat:@"rtmp://testlivesdk.v0.upaiyun.com/live/%@", _streamId];
    
    //6. 设置视频采集尺寸。其他详细设置请参考高级示例。
    [UPAVCapturer sharedInstance].capturerPresetLevel = UPAVCapturerPreset_640x480;
    
    //6. 开始推流
    [[UPAVCapturer sharedInstance] start];

    //7. 结束推流
    [[UPAVCapturer sharedInstance] stop];

5.2 拉流使用示例 UPAVPlayer

使用 UPAVPlayer 需要引入头文件 #import <UPLiveSDKDll/UPAVPlayer.h>

UPAVPlayer 使用接口类似 AVFoundationAVPlayer

    //1. 初始化播放器
    _player = [[UPAVPlayer alloc] initWithURL:@"rtmp://live.hkstv.hk.lxdns.com/live/hks"];
    
    //2. 设置代理,�接收状态回调信息
    _player.delegate = self;
    
    //3. 设置播放器 playView Frame
    [_player setFrame:self.view.bounds];
    
    //4. 添加播放器 playView
    [self.view insertSubview:_player.playView atIndex:0];
    
    //5. 开始播放
    [_player play];

    //6. 停止播放
    [_player stop];

[注1] 如果需要在产品中正式使用连麦功能,请联系申请 rtc appid, 可以参考 README_rtc.md 熟悉连麦直播流程。

[注2] 单音频推流与连麦, 只需要在连麦或推流时设置 [UPAVCapturer sharedInstance].audioOnly = YES; 即可。

[注3] 可以通过 [UPAVCapturer sharedInstance].streamingOn 开关,来实现先预览再推流的逻辑。

[注4] 如果确定有视频流, 而拉流的时候出现黑屏,可以设置player.hasVideo = YES 来开启强制创建视频流信息。

6 版本历史

历史版本:https://github.com/upyun/ios-live-sdk/releases

7 反馈与建议

邮箱:livesdk@upai.com

QQ: 200576786

About

UPYUN 直播 SDK。播放器、采集器、推流器统一集成,功能完备接口简练,可以快速安装使用。采集与音视频处理模块开源,灵活性强可以满足复杂定制需求。UPYUN 直播平台一站式服务:http://docs.upyun.com/live/

Resources

Stars

Watchers

Forks

Packages

No packages published