产品
热门产品
计算与网络
存储与大数据
人工智能
SaaS基础设施
视联物联
研发运维
专有部署
热门产品
云舟观测 GC
一站式数据采集与应用监控观测平台
计算与网络
网络加速
内容分发网络 CDN
安全、稳定、低延时的分发加速服务
P2P内容分发网络 PCDN
利用闲置资源而构建的低成本高品质CDN
存储与大数据
存储服务
对象存储 OBS
稳定、安全、可靠的云存储服务
文件存储 QHDFS
具有标准HDFS访问协议、卓越性能的分布式文件系统
人工智能
视觉分析
视图计算 VEC
云边融合 AI赋能的智能视图计算
内容审核
内容审核 CM
图片审核|文本审核|音频审核|视频审核
人脸与人体识别
人脸人体识别 FHR
人脸识别|人体识别|人脸比对|摔倒检测
OCR识别
OCR识别 OCR
卡证识别|通用文本识别|车牌识别
图像技术
图像技术 IA
面向图片场景提供的多种人工智能技术
AI市场
模型市场 MaaS
图片、音频、视频等多场景的算法模型
SaaS基础设施
基础组件
API文档管理 APICloud
API文档、调试、MOCK一体化协作平台
统一身份认证 IAM
统一的身份认证、授权管理
内容建站
幕印企业学堂 MuYin
企业培训|内容付费|知识营销
视联物联
视频服务
视频直播 LIVE
大规模实时转码、低延时的直播服务
视频点播 VOD
视频流畅播放服务
音视频通话 RTC
便捷的跨平台实时音视频互动直播服务
媒体处理 MPC
简洁的云媒体转码及内容合成处理服务
视频工具
视频工具 SDK
视频剪辑SDK | 播放SDK
视频应用
易讲教室直播 YiJiang
视频技术与传统教室融合
物联网平台
帝视物联网 IOT
低延时、海量存储的物联网视频监控服务
企业物联网平台
设备管理|设备接入|规则引擎|应用开发
生活物联网平台
针对消费级智能设备的物联网平台
研发运维
应用开发
云短信 SMS
融合三网,安全可信的短信服务
运维效能
云舟观测 GC
一站式数据采集与应用监控观测平台
应用安全
三六零天御加固保 JiaGu
提供安全可靠的加固防护产品及服务
研发效能
兼容性测试 OpenTest
提供数百款TOP机型的云测服务
真机租用 RentPhone
远程真机租用,流畅体验如手机在手
iOS预审 iOSPre
智能扫描、分析、筛查ios审核的被拒风险点
专有部署
云计算
360云计算管理平台 Stack
规划、建设、运维一体的云计算解决方案
大数据
奇麟大数据 QiLin
企业级一站式大数据平台
容器服务
360容器管理平台 Container
可对外私有化的容器云平台
AI开发平台
360AI开发平台专有版 Prophet
全流程机器学习开发平台
更多产品,敬请期待
解决方案
产品解决方案
行业解决方案
产品解决方案
视频
通用直播解决方案
短视频解决方案
公共语音房聊天室解决方案
物联网
儿童手表音视频通话
云端NVR解决方案
数据上云
通用存储解决方案
IoT设备
AI+IPC解决方案
智能门锁解决方案
安防传感解决方案
智能网关解决方案
个护健康解决方案
账号体系
360用户帐号体系解决方案
行业解决方案
智慧城市
智慧社区解决方案
智慧交通解决方案
电商视频解决方案
电商视频解决方案
电商平台收款解决方案
教育
在线教育解决方案
互动课堂解决方案
全屋智能
智慧公寓解决方案
智慧酒店解决方案
家庭智能解决方案
智慧安防解决方案
医疗
健康看护解决方案
智能制造
工业物联网解决方案
游戏
游戏音视频解决方案
更多解决方案,敬请期待
帮助支持
技术社区
关于我们
控制台
登录
注册
SDK管理
云直播
产品文档
常见问题
API文档
云点播
产品文档
快速入门
API文档
CDN
产品文档
API文档
云存储
产品文档
SDK手册
API文档
互动直播
产品文档
API文档
操作指南
SDK管理
播放SDK
上传SDK
剪辑SDK
媒体处理
产品文档
API文档
帝视
产品文档
API文档
操作指南
支付平台
产品列表
产品文档
渠道接入解析
内容审核
产品文档
API文档
OCR识别
产品文档
API文档
人脸与人体识别
产品文档
API文档
SSL证书
产品说明
购买指南
电子签章
产品介绍
接入流程
云短信
接口文档
物联网平台
产品简介
快速入门
幕印企业学堂
产品介绍
生活物联网平台
产品简介
快速入门
图片处理
产品介绍
接口文档
视图计算
产品介绍
快速入门
常见问题
易讲-教室直播
产品介绍
帮助说明
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
VCloudPlayer
拍摄SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
剪辑SDK
iOS
版本说明
开发文档
Android
版本说明
开发文档
版本说明
投屏SDK
iOS
开发文档
Android
开发文档
播放SDK
iOS
开发文档
版本说明
Android
开发文档
Android版本说明
开发者合规指南
Web 上传SDK
首页
>
开发者中心
>
SDK管理
>
播放SDK
>
iOS
>
开发文档
# iOS播放SDK开发文档 ### iOS播放SDK简单介绍 智汇云以SDK形式提供视频直播点播播放器,可以帮助开发者快速实现视频播放能力。SDK包含Framework、demo及开发文档。播放器SDK支持ffmpeg多种裁剪,业务可根据自身业务类型自行选择。 ### 功能说明 系统属性 | 系统特性 | 支持内容 | | -------- | ------------ | | 系统版本 | iOS8+ | | 流媒体协议 | RTMP、hls、http-flv、私有协议 | | 硬件特性 | armv7、arm64 | 支持协议 | 直播协议 | 协议优势 | 缺陷 | | -------- | ------------ | ------------ | | RTMP | 延时相对较低 | 大并发时消耗性能较大且防火墙不友好 | | http(FLV)| 延时比较低 | 对防火墙友好,但移动端支持不友好 | | http(M3u8)| 在移动端支持最好,延时比较大,一般在10-20s左右 |延时比较大 | 点播协议 | 协议优势 | 缺陷 | | -------- | ------------ | ------------ | | http(M3u8)| 移动端支持比较好 | 多个小文件分发,系统维度难度相对大 | | http(FLV)| 一般直播转回放可以用 | 移动端需要用SDK播放 | | http(mp4)| 在移动端支持相对好 | 对播放器要求比较高,容错性比较差 | 解码库说明 类型 | 体积 | 支持协议 | 支持容器 | 适用场景 ---|---|---|---|---|--- 精简版 | 小 | http/https/rtmp/hls | mp4/flv/m3u8/ts | 在乎体积大小,点播播放和直播flv场景 录制版 | 中 | http/https/rtmp/hls | mp4/flv/m3u8/ts |在乎体积大小,附带边播边录功能 全解码版 | 大 | http/https/rtmp/hls | mp4/flv/m3u8/ts/avi/rm/rmvb/mkv/mov/... | 体积较大,但可以播放绝大多数视频 含录制全解码 | 大 | http/https/rtmp/hls | mp4/flv/m3u8/ts/avi/rm/rmvb/mkv/mov/... | 能播放市面上绝大多数视频,且还能边播边录制到本地 功能列表 | 系统特性 | 支持内容 | |--------------|----------------------------------------------------| | 解码方式 | 支持软硬解码切换 | | 基础播放功能 | 开始、暂停、停止、快进、快退、静音等基础播放器功能 | | 播放屏幕 | 全屏、非全屏 | | 播放截图 | 支持从视频流中截图 | |画面填充|直冲多种画面的预览模式包括:原始尺寸、视频屏幕、全屏铺满、16:9、4:3等| |获取文件meta信息|支持获取视频文件属性信息| | 解码标准 | 以用户选择为准 | | 视频格式 | 以用户选择为准 | | 多实例播放 | 多实例支持 | | 倍速播放 | 支持 | | 视频缓存支持 |支持,支持视频下载 | |播放器秒开|在1s之内快速打开视频播放| |是否追帧|支持自由设置| |缓冲策略|支持自由配置 |边播放边录制|支持| |云引擎配置|支持云引擎配置参数| |多码率播放|支持无缝切换多码率播放,支持网络自适应| |渲染后置处理|支持业务自定义后置处理方式,自由接管渲染模式| |画质设置|支持亮度、饱和度、锐利度设置| |镜像播放|支持镜像播放| |统计信息,如实时帧率、码率|帧率、码率实时信息回调给客户,方便客户做不同网络状况下的业务| ### SDK集成 #### 下载SDK sdk下载链接:[https://zyun.360.cn/developer](https://zyun.360.cn/developer) - QHVCPlayerKit.framework - QHVCCommonKit.framework demo下载链接:[https://rs-beijing.oss.yunpan.360.cn/Object.getFile/sdk-release-tools/5pKt5pS+5ZmoRGVtb19pT1Muemlw](https://rs-beijing.oss.yunpan.360.cn/Object.getFile/sdk-release-tools/5pKt5pS+5ZmoRGVtb19pT1Muemlw) #### 配置说明 将两个库添加到工程配置Build Phases选项卡下面Link Binary With Libraries中,Status选择Required ``` TARGETS->General->Frameworks,Libraries,and Embedded Content 选择Embed & Sign QHVCPlayerKit.framework QHVCCommonKit.framework ``` #### 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 //未调用鉴权接口 }; ``` #### 调试 为便于接入时定位问题,可以在开发版本中打开日志。 ``` [QHVCPlayer setLogLevel:QHVCPlayerLogLevelDebug]; ``` ### 代码对接 ###### 1、初始化播放器 ``` player = [[QHVCPlayer alloc] initWithURL:testUrl channelId:cid userId:nil playType:QHVCPlayTypeVod]; ``` 如下url可用于测试 ``` //竖屏视频 url = @"http://static.s3.huajiao.com/Object.access/hj-video/NTg1NzY5ODgxNDgxNjM2MzM5OTUxMjcwNjg1MDUzNy5tcDQ="; ``` ##### 2、设置代理 ``` player.playerDelegate = self;//必须设置 player.playerAdvanceDelegate = self;//需要使用高级接口时设置 ``` ##### 3、创建播放器视图 ``` playerView = [_player createPlayerView:CGRectMake(0, 0, 100, 100)]; ``` ##### 4、准备播放 ``` [player prepare];//整个player生命周期调用一次,多调用无效 ``` ##### 5、首次播放 ``` //首次播放必须在onPlayerPrepared方法回调回来后调用play才能生效 [player play]; //首次播放 [player openNetStats:5]; //需要流量统计时调用(5是计算周期默认值) ``` ### 协议部分 ```Objective-C @required /** 播放器首次加载缓冲准备完毕,在此回调中调用play开始播放 */ - (void)onPlayerPrepared:(QHVCPlayer *_Nonnull)player; /** 播放器首屏渲染,可以显示第一帧画面 */ - (void)onPlayerFirstFrameRender:(NSDictionary *_Nullable)mediaInfo player:(QHVCPlayer *_Nonnull)player; /** 播放结束回调 */ - (void)onPlayerFinish:(QHVCPlayer *_Nonnull)player; @optional /** * 视频大小变化通知 * * @param width 视频宽度 * @param height 视频高度 */ - (void)onPlayerSizeChanged:(int)width height:(int)height player:(QHVCPlayer *_Nonnull)player; /** 开始缓冲(buffer为空,触发loading) */ - (void)onPlayerBufferingBegin:(QHVCPlayer *_Nonnull)player; /** * 缓冲进度(buffer loading进度) * * @param progress 缓冲进度,progress==0表示开始缓冲, progress==100表示缓冲结束 */ - (void)onPlayerBufferingUpdate:(int)progress player:(QHVCPlayer *_Nonnull)player; /** 缓冲完成(buffer loading完成,可以继续播放) */ - (void)onPlayerBufferingComplete:(QHVCPlayer *_Nonnull)player; /** 播放进度回调 @param progress 播放进度 */ - (void)onPlayerPlayingProgress:(CGFloat)progress player:(QHVCPlayer *_Nonnull)player; /** 测试用 @param mediaInfo 视频详细参数 */ - (void)onplayerPlayingUpdatingMediaInfo:(NSDictionary *_Nullable)mediaInfo player:(QHVCPlayer *_Nonnull)player; /** * 拖动操作缓冲完成 */ - (void)onPlayerSeekComplete:(QHVCPlayer *_Nonnull)player; /** * 播放器错误回调 * * @param error 错误类型 * @param extraInfo 额外的信息 */ - (void)onPlayerError:(QHVCPlayerError) error extra:(QHVCPlayerErrorDetailedInfo)extraInfo player:(QHVCPlayer *_Nonnull)player; /** * 播放状态回调 * * @param info 参见状态信息枚举 * @param extraInfo 扩展信息 */ - (void)onPlayerInfo:(QHVCPlayerStatus)info extra:(NSString * _Nullable)extraInfo player:(QHVCPlayer *_Nonnull)player; /** 码率切换成功 @param index 播放index */ - (void)onPlayerSwitchResolutionSuccess:(int)index player:(QHVCPlayer *_Nonnull)player; /** 码率切换失败 @param errorMsg errorMsg description */ - (void)onPlayerSwitchResolutionFailed:(NSString *_Nullable)errorMsg player:(QHVCPlayer *_Nonnull)player; /** 主播切入后台 */ - (void)onPlayerAnchorInBackground:(QHVCPlayer *_Nonnull)player; /** 系统音量回调 @param volume 系统音量 */ - (void)onPlayerSystemVolume:(float)volume; /** 音频音高回调 @param volume 大小 */ - (void)onPlayerAudioPitch:(int)volume player:(QHVCPlayer *_Nonnull)player; /** 接收自定义透传数据 @param data 自定义数据 */ - (void)onUserData:(NSData *_Nullable)data player:(QHVCPlayer *_Nonnull)player; /** seiMeta信息 @param type 类型 @param data 数据 */ - (void)onPlayerSeiMeta:(long)type data:(NSData *_Nullable)data player:(QHVCPlayer *_Nonnull)player; /** 自定义seiMeta信息 @param data 数据 */ - (void)onPlayerCustomizeSeiMeta:(NSData *_Nullable)type data:(NSData *_Nullable)data player:(QHVCPlayer *_Nonnull)player; /** 播放器实例句柄创建 */ - (void)onPlayerHandlerCreated:(QHVCPlayer *_Nonnull)player; /** 播放器销毁 */ - (void)onPlayerDestoryed:(QHVCPlayer *_Nonnull)player; /** 流量计算回调函数 @param dvbps 播放器下行视频每秒字节数 @param dabps 播放器下行音频每秒字节数 @param dvfps 播放器下行视频每秒帧数 @param dafps 播放器下行音频每秒帧数 @param fps 当前fps @param bitrate 当前bitrate */ - (void)onPlayerNetStats:(long)dvbps dabps:(long)dabps dvfps:(long)dvfps dafps:(long)dafps fps:(long)fps bitrate:(long)bitrate player:(QHVCPlayer *_Nonnull)player; /** 编码方式 @param decodingType 编码类型 @param sn sheduled_sn_url @param errorCode errorCode */ - (void)onPlayerDecodingType:(QHVCPlayerDecodingType)decodingType sn:(NSString *_Nullable)sn errorCode:(int)errorCode player:(QHVCPlayer *_Nonnull)player; /** 直播预览指定次数结束回调 */ - (void)onPlayerPreviewFinished:(QHVCPlayer *_Nonnull)player; /** 播放实时回调音频buffer @param sampleBuffer 音频buffer */ - (void)onPlayerAudioDataCallback:(CMSampleBufferRef _Nonnull)sampleBuffer; /** 播放实时回调视频buffer @param pixelBuffer 视频buffer */ - (void)onPlayerVideoDataCallback:(CVPixelBufferRef _Nonnull)pixelBuffer player:(QHVCPlayer *_Nonnull)player; /** 返回原始数据包(注意该接口必须同步处理数据) @param packet 数据包结构体 */ - (void)onPlayerOutputPacket:(QHVCPacket)packet; /** 录制完成 */ - (void)onPlayerRecodeCompleted:(QHVCPlayer *_Nonnull)player; ``` ### API部分 ##### 创建player ```Objective-C options @{ @"streamType":@"intValue",//流类型 @"hardDecode":@"boolValue",//解码方式 @"position":@"longValue",//起播位置 @"mute":@"boolValue",//静音播放 @"forceP2p":@"boolValue",//是否使用p2p @"playMode":@"intValue",//播放模式(流畅、低延时、iot) @"audioSessionCategory":@"intValue",//音频权限 @"audioMixWithOthers":@"boolValue",//是否其他应用混音 @"setPreferredIOBufferDuration":@"boolValue",//设置音频IO缓冲大小 @"outputPacket":@"boolValue",//吐出解码前数据包 @"inputStream":@"boolValue",//输入流作为播放源 @"enableAnalyzeSei":@"boolValue"//解析sei信息 } player = [[QHVCPlayer alloc] initWithURL:testUrl channelId:cid userId:nil playType:QHVCPlayTypeVod options:options]; ``` ##### 创建playerView ```Objective-C /** 创建播放器渲染playerView @return playerView */ - (UIView *_Nonnull)createPlayerViewWithFrame:(CGRect)frame; /** 创建播放器渲染playerView 透明 @return playerView */ - (UIView *_Nonnull)createPlayerTransparentViewWithFrame:(CGRect)frame; /** 创建播放器渲染playerView(add在传入的view上) @param view playerView */ - (void)createPlayerView:(UIView *_Nonnull)view; /** 创建播放器渲染playerView(add在传入的view上) @param view playerView */ - (void)createPlayerConstraintView:(UIView *_Nonnull)view; /** 创建播放器渲染playerView(add在传入的view上)透明 @param view playerView */ - (void)createPlayerTransparentView:(UIView *_Nonnull)view; /** 创建播放器渲染playerView(add在传入的view上)透明 @param view playerView */ - (void)createPlayerConstraintTransparentView:(UIView *_Nonnull)view; /** 释放player时候是否移除playerView @param remove 默认移除 */ - (void)removePlayerViewWhenPlayerRelease:(BOOL)remove; /** 重置画布(GLView大小变化之后调用,如果不调用画面可能变虚:注意不能频繁调用,如果有动画,建议在动画结束时候调用。否则可能出现绿屏) */ - (void)resetCanvas; /** 渲染位置偏移 @param offset 偏移量 @param heigth 画布高度 */ - (void)playerViewTranslate:(int)offset canvasHeight:(int)heigth; ``` ##### 切码率 ```Objective-C /** 切换码率 @param index 索引 @return success or not */ - (BOOL)switchResolutionWithIndex:(int)index; ``` ```Objective-C /** 自动切换码率 @param isAutomatically yes or no */ - (void)setAutomaticallySwitchResolution:(BOOL)isAutomatically; ``` ##### 字幕 ```Objective-C /** 设置字幕(onPlayerSizeChanged之后调用,否则无效) @param subtitles 字幕文件本地地址 @param index 字幕文件默认索引 @return yes 成功 no 失败 */ - (BOOL)setSubtitlesWithUrls:(NSArray<NSString *> *_Nonnull)subtitles defaultIndex:(NSInteger)index; /** 切换字幕 @param index 时长(单位ms) @return yes 成功 no 失败 */ - (BOOL)switchSubtitlesWithIndex:(NSInteger)index; ``` ##### 音量 ```Objective-C /** 回调系统音量 @param callback 是否回调 */ - (void)setSystemVolumeCallback:(BOOL)callback; /** 隐藏系统音量视图 @param hidden 是否隐藏 */ - (void)setSystemVolumeViewHidden:(BOOL)hidden; /** 设置音量 @param volume 音量范围 0.0~1.0 (1.0最大) @return YES:成功, NO:失败 */ - (BOOL)setVolume:(float)volume; /** 获取播放器当前音量 @return 音量范围 0.0~1.0 (1.0最大) */ - (float)getVolume; /** 设置音高回调间隔 @param amount 间隔大小 */ - (void)setAudioPitchCallbackInterval:(uint)amount; /** 设置静音 @param mute 是否静音 */ - (void)setMute:(BOOL)mute; /** 是否静音 @return yes or no */ - (BOOL)isMute; ``` ##### 截图 ```Objective-C /** 截图 @param callback 回调 @return yes 成功 no 失败 */ - (BOOL)snapshotImage:(void (^_Nonnull)(UIImage * _Nullable image))callback; ``` ##### 录制 ```Objective-C /** * 开始录制(注意:此接口与setAudioDataOutput冲突,先设置的生效) * 注意:不支持暂停时录制 * * @param filePath 录像存储路径(确保有读写权限) * @param recorderFormat 存储格式 * @param config 配置 * @return yes:成功 no: 失败 */ - (BOOL)startRecorder:(NSString *_Nonnull)filePath recorderFormat:(QHVCRecorderFormat)recorderFormat recordConfig:(QHVCRecordConfig *_Nullable)config; /** * 结束录制 * * @return yes:成功 no: 失败 */ - (BOOL)stopRecorder; ``` ##### 边缘高斯模糊 ```Objective-C /** 视频边缘模糊化 @param edgeBlur yes:打开 or no:关闭 */ - (void)setEdgeBlur:(BOOL)edgeBlur; ``` ##### 画质增强 ```Objective-C /** 画质增强开关(本地控制模式时生效,控制模式由云端控制) @param enable 开启:YES,关闭:NO */ - (void)enableImageEnhanced:(BOOL)enable; /** * 设置视频画质增强filter属性 * @param brightness 亮度 取值范围(-0.2f, 0.35f) * @param contrast 对比度 取值范围(0.9f, 1.6f) * @param saturation 饱和度 取值范围(0.15f, 2f) */ - (void)enhancedImageQuality:(float)brightness contrast:(float)contrast saturation:(float)saturation; ``` ##### 倍速播放 ```Objective-C /** * 倍速播放 * * @param rate 播放速度,取值1~n(建议n<=5) */ - (void)setPlaybackRate:(float)rate; /** 获取播放倍速 @return 倍速值 */ - (float)getPlaybackRate; ``` ##### 基础功能 ```Objective-C /** 播放器准备播放,准备完毕后回调onPrepared */ - (void)prepare; ``` ```Objective-C /** 播放器准备完成后调用该接口开始播放,调用时机说明:播放器准备完成后会回调QHVCPlayerDelegate中的onPrepared方法,在该方法中调用play开始播放 */ - (void)play; ``` ```Objective-C /** 点播视频暂停播放, 直播场景调用无效,暂停后继续播放使用play */ - (void)pause; ``` ```Objective-C /** 播放器停止播放 */ - (void)stop; ``` ```Objective-C /** 播放过程中改变进度操作,直播场景无效 * @param positionByMS 点播视频位置,单位毫秒(millisecond) * @return 成功:YES,失败:NO */ - (BOOL)seekTo:(NSTimeInterval)positionByMS; ``` ```Objective-C /** 点播视频当前播放时间 @return 点播视频场景下获取当前播放时间,单位毫秒 */ - (NSTimeInterval)getCurrentPosition; ``` ```Objective-C /** 点播视频总时长 @return 点播视频总时长,直播时调用无效,单位毫秒 */ - (NSTimeInterval)getDuration; ``` ```Objective-C /** 获取播放器回看缓冲下载进度 @return <0失败, >0成功 */ - (long)getDownloadProgress; ``` ##### 日志 ```Objective-C /** 设置日志级别 @param level 日志级别 */ + (void)setLogLevel:(QHVCPlayerLogLevel)level; ``` ```Objective-C /** 设置日志输出block @param logOutput 接收日志block */ + (void)setLogOutputBlock:(void (^_Nonnull)(int loggerID, QHVCPlayerLogLevel level, const char * _Nonnull data))logOutput; ``` ### SDK集成注意事项: ``` QHVCPLayerKit.framework与QHVCCommonKit.framework均是动态库,一定要在TARGETS->General->Embed Binaries下引入 ``` ``` 播放器指针置空之前确保调用[player stop];否则无法停止播放,而且调用stop之后,player将无法继续工作。必须重新初始化 ``` ``` 首次调用[player play];必须在onPlayerPrepared方法回调回来后,否则无效 ``` ### SDK错误通知: QHVCPlayerError | 错误码 | 注释 | | -------- | ------------ | | 1 | 播放器初始化失败 | | 2 | 播放器连接失败,比如网络连接 | | 3 | 文件格式不支持 | | 4 | 文件打开失败 | QHVCPlayerErrorDetailedInfo | 错误码 | 注释 | | -------- | ------------ | | 0 | 未知消息 | | 1 | I/O异常 | | 2 | 拒绝连接 | | 3 | 无效的数据 | | 4 | 退出,可能注册了无效的过滤器 | | 5 | 找不到Bitstream | | 6 | 找不到解码器 | | 7 | 找不到demuxer | | 8 | 找不到Filter | | 9 | 找不到Protocol | | 10 | 找不到Stream | | 11 | server 错误 | | 12 | EOF | | 13 | 播放器初始化handle为空 | | 14 | prepare failed | ### SDK日志文件: 本地路径Library/Cache/com.qihoo.videocloud/log/QHVCPlayer
即刻开始使用
只需完成注册与实名认证,即可体验我们的贴心服务
立即使用
请您联系我们
邮箱
g-zyun@360.cn
电话
4000052360
小安提醒您
试用小安,请确保该账户已通过智汇云实名认证
前往认证中心>>
1对1免费
咨询智汇云专属顾问
为您量身定制产品解决方案
您的姓名 :
手机号 :
公司名称(选填) :
相关产品 :
留言内容 :
需求描述
产品建议
其他
提交
登录后才可以留言哦
立即登录
去注册账号