推流-SDK-开发指南

音视频直播 LSS

  • 播放器SDK
  • Demo体验
  • 产品动态
  • 产品描述
    • 功能特性
    • 产品概述
    • 产品优势
    • 应用场景
    • 核心概念
  • 控制台操作指南
    • 多用户访问控制
    • LSS概览
    • 标签管理
    • 黄反审核
    • 安全策略
    • 开通LSS
    • 日志管理
    • 质量监控
    • 操作指引
    • 统计分析
      • 用量查询
      • 直播域名
      • 用户行为
    • 模板管理
      • 缩略图模板
      • 水印模板
      • 通知模板
      • 转码模板
      • 录制模板
    • 域名管理
      • 配置HTTPS
      • 时移&回看功能
      • 配置CNAME
      • 关闭域名
      • 添加域名
      • 删除域名
      • 开启域名
      • 配置转推功能
    • 流管理
      • 查询流信息
      • 新建流
  • 入门指南
    • 开始使用LSS
    • 创建推流和播放域名
    • 快速入门流程
  • 第三方工具使用指南
    • OBS推流工具使用指南
  • 服务等级协议SLA
    • LSS服务等级协议SLA
  • API参考
    • 日志下载接口
    • 统计接口
    • 模板接口
    • 文档更新记录
    • 通知接口
    • Stream接口
    • 轮播接口
    • 错误返回
    • 录制视频裁剪
    • 使用须知
    • 公共头域
    • 概述
  • 常见问题
    • API、SDK使用类问题
    • 计费类问题
    • 使用类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
  • 视频专区
    • 操作指南
    • 开通直播服务
    • 新手入门
    • 产品简介
  • 低延时直播
    • 低延时直播概述
    • Demo和SDK接入说明
    • 低延时直播RTL SDK隐私政策
    • 低延时直播和标准直播区别
    • 低延时直播RTL SDK开发者个人信息保护合规指引
    • 低延时直播快速入门
    • SDK集成指南
      • SDK集成指南
      • 低延时传输层SDK
        • SDK接口说明
        • iOS端SDK集成指引
        • Android端SDK集成指引
      • 低延时全功能SDK
        • Android 端集成指引
  • 产品定价
    • 余额不足提醒和欠费处理
    • 账单
    • 购买流程
    • 计费方式变更
    • 计费概述
    • 预付费资源包
    • 退款说明
    • 直播增值服务费用
      • 直播录制
      • 直播审核
      • 直播转推
      • 直播转码
      • 直播时移
      • 直播截图
    • 直播基础服务费用
      • 标准直播服务费用
      • 低延时直播服务费用
  • 服务端SDK
    • 服务端PHP-SDK
      • 异常处理
      • 安装LSS-PHP-SDK
      • 安装LssClient
      • LSS开发指南
    • 服务端Java-SDK
      • 录制功能
      • 统计功能
      • 通知功能
      • Java-SDK-文档
      • 安装LSS-Java-SDK
      • stream管理
      • LssClient
  • 推流端SDK
    • iOS端推流SDK
      • 简介
      • 推流-SDK-开发指南
    • Android端推流SDK
      • 简介
      • 推流-SDK-开发指南
所有文档
menu
没有找到结果,请重新输入

音视频直播 LSS

  • 播放器SDK
  • Demo体验
  • 产品动态
  • 产品描述
    • 功能特性
    • 产品概述
    • 产品优势
    • 应用场景
    • 核心概念
  • 控制台操作指南
    • 多用户访问控制
    • LSS概览
    • 标签管理
    • 黄反审核
    • 安全策略
    • 开通LSS
    • 日志管理
    • 质量监控
    • 操作指引
    • 统计分析
      • 用量查询
      • 直播域名
      • 用户行为
    • 模板管理
      • 缩略图模板
      • 水印模板
      • 通知模板
      • 转码模板
      • 录制模板
    • 域名管理
      • 配置HTTPS
      • 时移&回看功能
      • 配置CNAME
      • 关闭域名
      • 添加域名
      • 删除域名
      • 开启域名
      • 配置转推功能
    • 流管理
      • 查询流信息
      • 新建流
  • 入门指南
    • 开始使用LSS
    • 创建推流和播放域名
    • 快速入门流程
  • 第三方工具使用指南
    • OBS推流工具使用指南
  • 服务等级协议SLA
    • LSS服务等级协议SLA
  • API参考
    • 日志下载接口
    • 统计接口
    • 模板接口
    • 文档更新记录
    • 通知接口
    • Stream接口
    • 轮播接口
    • 错误返回
    • 录制视频裁剪
    • 使用须知
    • 公共头域
    • 概述
  • 常见问题
    • API、SDK使用类问题
    • 计费类问题
    • 使用类问题
    • 常见问题总览
    • 性能类问题
    • 安全类问题
  • 视频专区
    • 操作指南
    • 开通直播服务
    • 新手入门
    • 产品简介
  • 低延时直播
    • 低延时直播概述
    • Demo和SDK接入说明
    • 低延时直播RTL SDK隐私政策
    • 低延时直播和标准直播区别
    • 低延时直播RTL SDK开发者个人信息保护合规指引
    • 低延时直播快速入门
    • SDK集成指南
      • SDK集成指南
      • 低延时传输层SDK
        • SDK接口说明
        • iOS端SDK集成指引
        • Android端SDK集成指引
      • 低延时全功能SDK
        • Android 端集成指引
  • 产品定价
    • 余额不足提醒和欠费处理
    • 账单
    • 购买流程
    • 计费方式变更
    • 计费概述
    • 预付费资源包
    • 退款说明
    • 直播增值服务费用
      • 直播录制
      • 直播审核
      • 直播转推
      • 直播转码
      • 直播时移
      • 直播截图
    • 直播基础服务费用
      • 标准直播服务费用
      • 低延时直播服务费用
  • 服务端SDK
    • 服务端PHP-SDK
      • 异常处理
      • 安装LSS-PHP-SDK
      • 安装LssClient
      • LSS开发指南
    • 服务端Java-SDK
      • 录制功能
      • 统计功能
      • 通知功能
      • Java-SDK-文档
      • 安装LSS-Java-SDK
      • stream管理
      • LssClient
  • 推流端SDK
    • iOS端推流SDK
      • 简介
      • 推流-SDK-开发指南
    • Android端推流SDK
      • 简介
      • 推流-SDK-开发指南
  • 文档中心
  • arrow
  • 音视频直播LSS
  • arrow
  • 推流端SDK
  • arrow
  • iOS端推流SDK
  • arrow
  • 推流-SDK-开发指南
本页目录
  • 准备工作
  • ### 初始化 VCSimpleSession
  • ## 开始推流
  • ## 结束推流
  • ## 监听推流过程中的通知(v2.0.0版本后失效)
  • ## 处理推流 SDK 状态变化事件
  • ## 使用美颜功能
  • ## 参数控制

推流-SDK-开发指南

更新时间:2025-08-21

准备工作

  • 开通 百度智能云音视频直播服务,添加推拉流域名并获取推流地址及观看地址。
  • 登录百度智能云官网,在安全认证页面 获取 AK/SK。
  • 下载最新的iOS 端推流 SDK。
  • 准备 iOS 运行环境:iOS 8.0 及以上的所有系统。
  • Xcode版本:推荐使用Xcode 8.1。
  • 适配 CPU 指令集:armv7/armv7s、arm64、i386/x86_64。
  • 项目配置:

    (1) 支持cocoapods接入方式,具体请参见Github百度开发云页面。

    (2) 将Baidu-Capture-SDK-iOS-x.x.x/sdk 目录下的 VideoCore.framework 添加到 Xcode 工程。

    (3) 添加 VideoCore.framework 到 Embed Frameworks 中。

    如下图所示:

### 初始化 VCSimpleSession

推荐使用 VCSimpleSessionConfiguration 类来进行初始化(原有的初始化接口已被废弃,在未来的版本中将被删除),具体用法请参考如下代码段:

Plain Text
1    VCSimpleSessionConfiguration* configuration = [[VCSimpleSessionConfiguration alloc] init];
2    configuration.cameraOrientation = AVCaptureVideoOrientationPortrait;
3    configuration.videoSize = CGSizeMake(720, 1280);
4    configuration.bitrate = 1200 * 1000;
5    configuration.cameraDevice = VCCameraStateFront;
6    ...
7
8    self.session = [[VCSimpleSession alloc] initWithConfiguration:configuration];

参数详情请参见参数控制。

## 开始推流

初始化成功后,可以通过 startRtmpSessionWithURL 方法设置推流地址并开始推流。

以下示例代码使用 startRtmpSessionWithURL 设置推流路径并开始推流,推流 URL 的具体值为: rtmp://push.bj.bcelive.com/live/fjqgewdr17gqnuje235。

Plain Text
1[session startRtmpSessionWithURL:@"rtmp://push.bj.bcelive.com/live/" andStreamKey:@"fjqgewdr17gqnuje235"];
2或者
3[session startRtmpSessionWithURL:@"rtmp://push.bj.bcelive.com/live/fjqgewdr17gqnuje235"];

## 结束推流

开始推流成功后,您随时可以结束推流。

以下示例代码使用 endRtmpSession 结束推流。

Plain Text
1[session endRtmpSession];

## 监听推流过程中的通知(v2.0.0版本后失效)

  • 侦听 name 为 RTMP_Started 的系统消息以获取推流开始的事件

    示例代码:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRTMPStartedMessage:) name:RTMP_Started object:nil];

    (void) handleRTMPStartedMessage:(NSNotification*)notification { NSLog(@"RTMP Streaming was started..\n"); }

  • 侦听 name 为 RTMP_Error 的系统消息以获取推流异常的事件

    示例代码:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRTMPErrorMessage:) name:RTMP_Error object:nil];

    (void) handleRTMPErrorMessage:(NSNotification*)notification { NSLog(@"Error occurred in Streaming..\n"); }

注意:在收到 RTMP_Started 消息之前,请勿调用 endRtmpSession,否则将造成资源释放异常。推荐侦听状态变化事件代替通知事件。

## 处理推流 SDK 状态变化事件

在 VCSimpleSession 接口中,您可以通过实现名为 VCSessionDelegate 的 protocol,实时接收到推流 SDK 的一些属性及状态更新信息,其中 onError 接口用于在发生错误时通知用户。

protocol 定义如下:

Plain Text
1@protocol VCSessionDelegate <NSObject>
2@required
3- (void) connectionStatusChanged: (VCSessionState) sessionState;
4@optional
5- (void) didAddCameraSource:(VCSimpleSession*)session;
6- (void) onError:(VCErrorCode)error;
7@end

以下示例代码演示了如何实现 protocol 对 session 状态变化事件进行处理:

Plain Text
1- (void) connectionStatusChanged:(VCSessionState) state
2{
3    switch(state) {
4        case VCSessionStateStarting:
5            NSLog(@"Current state is VCSessionStateStarting\n");
6            [self.btnConnect setImage:[UIImage imageNamed:@"block.png"] forState:UIControlStateNormal];
7            break;
8        case VCSessionStateStarted:
9            NSLog(@"Current state is VCSessionStateStarted\n");
10            [self.btnConnect setImage:[UIImage imageNamed:@"to_stop.png"] forState:UIControlStateNormal];
11            break;
12        case VCSessionStateError:
13            NSLog(@"Current state is VCSessionStateError\n");
14            [self.btnConnect setImage:[UIImage imageNamed:@"to_start.png"] forState:UIControlStateNormal];
15            break;
16        default:
17            NSLog(@"Current state is VCSessionStateEnded\n");
18            [self.btnConnect setImage:[UIImage imageNamed:@"to_start.png"] forState:UIControlStateNormal];
19            break;
20    }
21}

注意:在 protocol 定义中,connectionStatusChanged 为必选方法,当推流 SDK 状态发生改变时,该方法会被调用,参数 sessionState 即为当前推流 session 所处的状态。

sessionState 参数为 VCSessionState 类型,定义如下:

Plain Text
1typedef NS_ENUM(NSInteger, VCSessionState)
2{
3    VCSessionStateNone, //推流 SDK 的初始状态
4    VCSessionStatePreviewStarted, //推流 SDK 开始出现预览画面
5    VCSessionStateStarting, //推流 SDK 开始连接服务器
6    VCSessionStateStarted, //推流已经开始
7    VCSessionStateEnded, //推流已经结束
8    VCSessionStateError //推流 SDK 出错
9};

在状态 VCSessionStateStarting 与 VCSessionStateStarted 之间,推流 SDK 正在后台连接 RTMP 服务器,此时请勿对 VCSimpleSession 对象进行任何操作,特别是请勿调用 endRtmpSession,否则将造成资源释放异常。状态变为 VCSessionStatePreviewStarted 后,方可使用美颜接口开启美颜功能。

其中,didAddCameraSource 为可选方法。

当推流 SDK 创建 CameraSource(即相机被占用)后,didAddCameraSource 方法会被调用,参数 session 为 VCSimpleSession 对象。

## 使用美颜功能

当推流 SDK 的状态变为 VCSessionStatePreviewStarted 时,可以使用 setBeatyEffect 和 enableBeautyEffect 两个接口设置美颜效果。

  • 设置美颜级别 beautyLevel: 预设美颜的一些参数,分为5个级别:

    Plain Text
    1  /**
    2  *  @brief 美颜级别定义
    3  */
    4  typedef NS_ENUM(NSInteger, VCBeautyLevel) {
    5      /**
    6       *  不开启美颜。
    7       */
    8      VCBeautyLevelNone,
    9      /**
    10       *  自然。基本去皱,适当美白提亮
    11       */
    12      VCBeautyLevelNatural,
    13      /**
    14       *  美白。去皱但不失真,以美白为主粉嫩为辅
    15       */
    16      VCBeautyLevelWhiten,
    17      /**
    18       *  粉嫩。去皱但不失真,以粉嫩为主美白为辅
    19       */
    20      VCBeautyLevelPink,
    21      /**
    22       *  梦幻。最大值
    23       */
    24      VCBeautyLevelMagic
    25  };
  • 设置具体的美颜参数 setBeatyEffect:用于设置美颜效果,参数为 0 表示没有效果,参数为 1 表示最大效果。调用该接口后美颜效果会立即生效,无需再次调用 enableBeautyEffect。接口定义如下:

    Plain Text
    1  /**
    2   * 设置美颜参数
    3   * bright 美白参数,取值范围[0, 1]
    4   * smooth 磨皮参数,取值范围[0, 1]
    5   * pink   粉嫩参数,取值范围[0, 1]
    6   */
    7  - (void) setBeatyEffect:(float) bright
    8               withSmooth:(float) smooth
    9                 withPink:(float) pink;
  • enableBeautyEffect:用于开启或关闭美颜效果。开启前若未使用 setBeatyEffect 接口设置过美颜参数,则使用默认美颜参数;否则使用最近设置的美颜参数。接口定义如下:

    Plain Text
    1  // 开启或关闭美颜效果
    2  - (void) enableBeautyEffect:(BOOL) isEnable;

## 参数控制

推流 SDK 提供丰富的参数供您灵活控制推流过程中的音视频效果,详情如下:

参数名 参数类型 含义 推流后是否可变 默认值 取值范围
videoSize CGSize 视频分辨率 否 无(必须初始化) 宽高均大于0
bitrate int 视频编码码率(单位为bps) 否 无(必须初始化) 大于100000
fps int 视频采集帧率 否 无(必须初始化) 大于1,小于等于30
useInterfaceOrientation BOOL 是否使用应用的竖直方向作为视频的竖直方向 否 NO YES, NO
cameraState VCCameraState 视频采集所用摄像头种类 是(调用 switchCamera) VCCameraStateBack VCCameraStateFront, VCCameraStateBack
orientationLocked BOOL 是否锁定视频正方向 是 YES YES, NO
torch BOOL 是否开启闪光灯 是 NO YES, NO
videoZoomFactor float 视频缩放比例 是 1.0 大于0,小于等于1.0
audioChannelCount int 音频采集编码过程中所使用的声道数 否 2 1, 2
audioSampleRate float 音频采集编码过程中所使用的采样率 否 44100.0 44100.0, 22050.0
micGain float 音量增益因子 是 1.0 大于等于0,小于等于1.0
focusPointOfInterest CGPoint 自动对焦时摄像头的对焦焦点 是 (0.5, 0.5) (0, 0)到(1, 1),(0, 0)表示左上角,(1, 1)表示右下角
exposurePointOfInterest CGPoint 摄像头的测光中心点 是 (0.5, 0.5) (0, 0)到(1, 1),(0, 0)表示左上角,(1, 1)表示右下角
continuousAutofocus BOOL 是否开启自动对焦 是 YES YES, NO
continuousExposure BOOL 是否开启动态测光 是 YES YES, NO
useAdaptiveBitrate BOOL 是否开启可变码率选项(暂不支持) 否 NO YES, NO
aspectMode VCAspectMode 视频画面对窗口的填充方式 是 VCAspectModeFit VCAspectModeFit, VCAscpectModeFill
filter VCFilter 实时滤镜效果 是 VCFilterNormal VCFilterNormal, VCFilterGray, VCFilterInvertColors, VCFilterSepia, VCFilterFisheye, VCFilterGlow, VCFilterGussBlur

上一篇
简介
下一篇
Android端推流SDK