产品
基础服务
视频云
人工智能
物联网
区块链
第三方服务
存储服务
云存储
网络加速
CDN
PCDN
动态加速(DCDN)
全站加速(WSA)
奇盾
企业应用
云短信
SSL证书
电子签章
支付系统
帐号服务平台
视频应用
云直播
云点播
音视频通信RTC
媒体处理
视频工具
剪辑SDK
播放SDK
云剪辑
推流SDK
内容安全
图片审核
视频审核
文本审核
音频审核
OCR识别
卡证识别
通用文本识别
车牌识别
人脸与人体识别
人脸实名认证
人脸识别
人体识别
图像技术
以图定位
AI开发平台
机器学习平台 Prophet Pro
AI能力定制平台 Prophet Lite
物联网视频
帝视
物联网平台
设备接入
设备管理
规则引擎
应用开发
边缘计算
区块链通用服务
QBaaS
开测平台
兼容性测试
真机租用
运营
消息推送
企业应用
企业直播-小虎盟
企业培训/在线教育/知识付费
教学直播-易讲
视频技术与传统教室融合
智能监控-小安
云边融合, AI使能的智能视频监控
解决方案
通用解决方案
行业解决方案
视频
通用直播解决方案
短视频解决方案
公共语音房聊天室解决方案
物联网
儿童手表音视频通话
云端NVR解决方案
数据上云
通用存储解决方案
IoT设备
摄像机
门锁
安防传感
网关
个护健康
账号体系
360用户帐号体系解决方案
智慧城市
智慧社区
智慧交通
电商
电商视频解决方案
电商平台收款解决方案
教育
在线教育解决方案
互动课堂解决方案
全屋智能
智慧公寓
智慧酒店
家庭智能
智慧安防
医疗
健康看护
智能制造
工业物联网
游戏
游戏音视频解决方案
帮助支持
关于我们
技术社区
控制台
登录
注册
SDK管理
云直播
产品文档
常见问题
API文档
云点播
产品文档
快速入门
API文档
CDN
产品文档
API文档
云存储
产品文档
SDK手册
API文档
互动直播
产品文档
API文档
操作指南
SDK管理
播放SDK
上传SDK
剪辑SDK
媒体处理
产品文档
API文档
帝视
产品文档
API文档
操作指南
帐号服务平台
整体介绍
SDK文档
支付平台
产品列表
产品文档
渠道接入解析
内容审核
产品文档
API文档
OCR识别
产品文档
API文档
人脸与人体识别
产品文档
API文档
SSL证书
产品说明
购买指南
电子签章
产品介绍
接入流程
云短信
接口文档
物联网平台
产品简介
快速入门
小虎盟
产品介绍
OBS使用教程
Android互动直播
开发文档
版本说明
Windows互动直播
开发文档
版本说明
iOS互动直播
Android推流
开发文档
版本说明
iOS推流
iOS推流SDK开发文档
Android上传SDK
Android上传SDK接入文档
Android上传SDK版本说明
IOS上传SDK
iOS上传sdk开发文档
IOS上传SDK版本说明
Net SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
IoT SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
Web
开发文档
版本说明
固件端
开发文档
WEB播放SDK
WEB播放器介绍
跨域请求媒体源失败
QHWW-Player
拍摄SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
剪辑SDK
iOS
版本说明
开发文档
Android
开发文档
版本说明
投屏SDK
iOS
开发文档
Android
开发文档
播放SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
Web 上传SDK
首页
>
开发者中心
>
SDK管理
>
iOS推流
>
iOS推流SDK开发文档
# ios推流SDK开发文档 ### iOS推流SDK简单介绍: 360直播云以SDK形式提供推流器,可以帮助开发者快速实现推流能力。SDK包括开发文档、开发demo、framework库文件。开发者可参考文档或demo,framework文件加入APP的工程中,完成相关配置,调用相关的API即可实现推流功能。 系统属性 | 系统特性 | 支持内容 | | -------- | ------------ | | 系统版本 | iOS8+ | | 流媒体协议 | RTMP、私有协议 | | 硬件特性 | armv7、arm64 | 推流属性 | 推流功能 | 支持内容 | | -------- | ------------ | | 基础功能 | 推流、断流续推 | | 拓展功能 | 发送用户自定义数据、调整分辨率 | ### SDK集成方法介绍: #### 初始化 需要调用`[QHVCCommonCoreEntry coreOnAppStart:appId appVer:version deviceId:deviceId model:model optionalParams:nil];`,接口说明如下: appId(也叫businessId)是为业务分配的业务ID(appId获取地址:登录[视频云官网](https://zyun.360.cn/)-控制台-SDK-应用管理-新建应用)【见下图】;version为业务端APP的版本号;deviceId为设备唯一标识;uid为业务方用户标识,只要保证唯一即可;options可选,通常传nil,如有特殊需求详见参数说明。  [点此查看应用ID](https://zyun.360.cn/console/sdk/application) > 对appId和channelID这两个参数的引入,在设计之初目的是为了每个业务有独立的ID,通过appId来获取云端的一些参数控制,特别是视频缓冲策略、P2P行为、硬解码黑白名单以及解码库类型;channelID更多的为数据统计打点的唯一标注,可以通过云点播和云直播的服务标识来获取,以此获取播放数据反馈。UserID的设计是为了业务方和视频云唯一的沟通桥梁,只要保持唯一即可,一般为用户ID的加密字符串,通过UserID可以排查到一个用户的级别的失败日志; #### APPID合法性验证 需要调用 `[QHVCCommonCoreEntry validityCheck:token randNum:randNum authTime:authTime callback:^(QHVCAuthStatus ret, NSString *detail) { }];,接口说明如下: 合法性验证需要用到appId, Access Key(简称AK)和Secret Key(简称SK)。AK、SK获取地址: 登录[视频云官网](https://zyun.360.cn/)-用户中心-秘钥管理【见下图】。 只有appId、Access Key以及Secret Key相匹配,才能通过鉴权,否则将无法正常使用SDK。  [点此查看秘钥](https://zyun.360.cn/console/usercenter/accesskey) ==注意:此接口必须在启动APP后120秒内调用,否则将无法正常使用SDK。== appId使用和SDK初始化时同样的内容,callback可以用来监听合法性验证结果。 计算authorization时需要使用AK、SK以及当前系统的时间戳和随机数。 **为了保证AK、SK的安全,请业务接入时,务必把AK和SK存储在服务端,并且把authorization的计算也放在服务端来做。** 计算authorization的示例代码如下: ``` NSString *randNum = [NSString stringWithFormat:@"%u", arc4random() + 1]; NSString *authTime = [NSString stringWithFormat:@"%lld", [QHVCToolUtils getCurrentDateByMilliscond]/1000]; QHVCGlobalConfig* globalConfig = [QHVCGlobalConfig sharedInstance];//参数配置 NSString *AK = globalConfig.appKey; NSString *SK = globalConfig.appSecret; NSString *paramsStr = [NSString stringWithFormat:@"appid=%@", [QHVCGlobalConfig sharedInstance].appId]; NSString *paramsSign = [QHVCToolUtils getMD5String:[NSString stringWithFormat:@"%@%@", [QHVCToolUtils getMD5String:paramsStr], randNum]]; NSString *authString = [NSString stringWithFormat:@"%@\n%@\n%@\n%@", AK, authTime, randNum, paramsSign]; NSString *sign = [QHVCToolUtils hmacSha1:SK data:authString]; NSString *token = [NSString stringWithFormat:@"%@:%@", AK, sign]; ``` 鉴权状态码: ``` typedef NS_ENUM(NSInteger, QHVCAuthStatus) { QHVCAuthStatus_OK = 1, //鉴权成功 QHVCAuthStatus_FAILED = -11001, //鉴权失败 QHVCAuthStatus_NOT_INVOKED = -11002 //未调用鉴权接口 }; ``` ####下载工程,demo对接 通过360直播云平台创建应用,然后获取到SDK使用的appid,然后下载iOS推流SDK ####函数及配置说明 #####添加依赖库 TARGETS->General->Embed Binaries QHVCLiveKit.framework QHVCCommonKit.framework ##### 引入头文件 ``` #import <QHVCLive/QHVCLive.h> ``` ##### 如果需要走调度调用如下接口 ``` [QHVCCommonScheduleEntry doScheduling:@"唯一sessionid" params:&sp] ``` ##### 开流 ``` publish_settings_t settings; settings.baseSettings.sid = “唯一id”; settings.baseSettings.event_cb = callback_t; settings.baseSettings.event_context = (__bridge void *)self; settings.baseSettings.retry_max = 9; settings.rtmpPushAddr = NULL; if (addr) { //走调度的时候不用设置地址 settings.rtmpPushAddr = [addr UTF8String]; } settings.needMp4Optimize = NO; settings.mp4FileName = NULL; settings.isOnlyToFile = false; //根据编码参数设置 media_settings_t media_setting; - (BOOL)openStream:(struct publish_settings *)publishSettings media_settings:(struct media_settings *)mediaSettings ``` ##### 推视频 ``` - (void)videoEncodedFrame:(CMSampleBufferRef)sampleBuffer; ``` ##### 推音频 ``` - (void)audioEncodedFrame:(NSMutableData *)audioFrame pts:(CMTime)pts; ``` ##### 停止 ``` - (int)publish_free_sessionWithReason:(int)reason isSwitch:(BOOL)isSwitch; ```
即刻开始使用
只需完成注册与实名认证,即可体验我们的贴心服务
立即注册
请您联系我们
邮箱
g-zyun@360.cn
电话
010-56821952
给我们留言
您的姓名
手机号
公司名称(选填)
相关产品
留言内容
需求描述
产品建议
其他
提交
登录后才可以留言哦
立即登录
去注册账号