全部产品
视频直播

快速接入

更新时间:2017-09-03 15:27:07   分享:   

概述

iOS 推流 SDK 是在 iOS 平台上使用的软件开发工具包 (Soft Development Kit),为 iOS 开发者提供简单易用的接口,帮助开发者实现 iOS 平台上的推流应用开发。

功能说明

  • 支持推流到主流 rtmp 服务器
  • 支持 H264 和 AAC 编码
  • 支持美颜特效
  • 支持对焦
  • 支持缩放操作
  • 支持闪光灯开关
  • 支持添加水印操作 且支持水印添加至任意位置
  • 支持镜像操作
  • 支持摄像头的切换
  • 支持固定横竖屏推流
  • 支持静音推流

阅读对象

  • 具有基本的 iOS 开发能力的开发者
  • 要求开发者对直播推流的基本功能有一定的了解

特别说明

  • iOS 系统版本要求在 iOS8.0 以上
  • 视频编码器采用 iOS 硬件编码
  • 推流 SDK 为单实例,包大小为 1M 左右

准备工作

  • 获取 推流SDK下载地址,其中 SDK 包含以下文件:

    • demo:调用 SDK 的示例工程,开发者可参考 demo 代码进行开发集成
    • lib:SDK 开发包,包含 framework 文件,需要在工程中进行引用
    • doc:相关接入文档
  • 确保已开通视频直播服务,可参阅文档:快速开始

  • 准备iOS开发环境: XCode6.0 以上版本,iOS SDK8.0 以上版本

开发环境配置

拖拽 sdk 文件夹到自己的 Xcode 项目中,勾选 Copy items if needed,点击 Finish,打开项目的 app target,在 Build Phases 中的 Link Binary With Libraries 添加以下依赖库:

  1. - libz.tbd
  2. - VideoToolbox.framework
  3. - AudioToolbox.framework
  4. - libstdc++.tbd
  5. - SystemConfiguration.framework
  6. - CoreTelephony.framework

iOS10 适配说明:
需要获取 iOS 设备的摄像头和麦克风权限,请在 plist 文件中添加如下权限:
Privacy - Camera Usage Description
Privacy - Microphone Usage Description

开发接入

1. 配置推流实例

控制器头导入#import<AlivcLiveVideo/AlivcLiveVideo.h>,并设置代理 AlivcLiveSessionDelegate

  1. //初始化 config 配置类
  2. AlivcLConfiguration *configuration = [[AlivcLConfiguration alloc] init];
  3. //设置推流地址
  4. configuration.url = pushUrl;
  5. //设置最大码率
  6. configuration.videoMaxBitRate = 1500 * 1000;
  7. //设置当前视频码率
  8. configuration.videoBitRate = 600 * 1000;
  9. //设置最小码率
  10. configuration.videoMinBitRate = 400 * 1000;
  11. //设置视频帧率
  12. configuration.fps = 25;
  13. //设置音频码率
  14. configuration.audioBitRate = 64 * 1000;
  15. //设置直播分辨率
  16. configuration.videoSize = CGSizeMake(360, 640);
  17. //设置横竖屏
  18. configuration.screenOrientation = AlivcLiveScreenVertical;
  19. //设置摄像头采集质量
  20. configuration.preset = AVCaptureSessionPresetiFrame1280x720;
  21. //设置前置摄像头或后置摄像头
  22. configuration.position = AVCaptureDevicePositionFront;
  23. //设置水印图片
  24. configuration.waterMaskImage = [UIImage imageNamed:@"watermask"];
  25. //设置水印位置
  26. configuration.waterMaskLocation = 1;
  27. //设置水印相对x边框距离
  28. configuration.waterMaskMarginX = 10;
  29. //设置水印相对y边框距离
  30. configuration.waterMaskMarginY = 10;
  31. //设置重连超时时长
  32. configuration.reconnectTimeout = 5;
2. 创建直播 session
  1. //初始化 liveSession 类
  2. self.liveSession = [[AlivcLiveSession alloc]
  3. initWithConfiguration: configuration]
  4. //设置session代理
  5. self.liveSession.delegate = self;
3. 开启预览,并开始推流
  1. //开启直播预览
  2. [self.liveSession alivcLiveVideoStartPreview];
  3. //开启直播
  4. [self.liveSession alivcLiveVideoConnectServer];
  5. //获取直播预览视图
  6. [self.liveSession previewView]

直播相关操作:

  1. //设置闪光灯模式
  2. self.liveSession.torchMode = AVCaptureTorchModeOn//关闭AVCaptureTorchModeOff
  3. //开启美颜
  4. [self.liveSession setEnableSkin:YES];
  5. //缩放
  6. [self.liveSession alivcLiveVideoZoomCamera:1.0f];
  7. //聚焦
  8. [self.liveSession alivcLiveVideoFocusAtAdjustedPoint:percentPoint autoFocus:YES];
  9. //调试信息
  10. AlivcLDebugInfo *i = [self.liveSession dumpDebugInfo];
  11. //静音
  12. [self.liveSession setMute:YES];
4. 停止
  1. //停止预览,注意:停止预览后将liveSession置为nil
  2. [self.liveSession alivcLiveVideoStopPreview];
  3. //关闭直播
  4. [self.liveSession alivcLiveVideoDisconnectServer];
  5. //销毁直播 session
  6. self.liveSession = nil

直播功能的相关代理方法

必须的代理方法 @required

直播出错的代理方法
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session error:(NSError *)error;

网速较慢时的代理方法
-(void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session;

可选的代理方法 @optional

音频初始化失败
-(void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session;

视频初始化失败
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session OpenVideoError:(NSError *)error;

音频编码器初始化失败
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeAudioError:(NSError *)error;

视频编码器初始化失败
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeAudioError:(NSError *)error;

音频设备获取成功
-(void)alivcLiveVideoOpenAudioSuccess:(AlivcLiveSession *)session;

视频设备获取成功
-(void)alivcLiveVideoOpenVideoSuccess:(AlivcLiveSession *)session;

推流连接成功
-(void)alivcLiveVideoOpenVideoSuccess:(AlivcLiveSession *)session;

码率变化
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session bitrateStatusChange:(ALIVC_LIVE_BITRATE_STATUS)bitrateStatus;

重连超时
-(void)alivcLiveVideoReconnectTimeout:(AlivcLiveSession *)session;

本文导读目录
本文导读目录
以上内容是否对您有帮助?