产品
存储
视频服务
人工智能
物联网
基础PaaS
研发运维
企业应用
专有部署
存储
存储服务
对象存储 OBS
稳定、安全、可靠的云存储服务
视频服务
视频应用
视频直播 LIVE
大规模实时转码、低延时的直播服务
视频点播 VOD
视频流畅播放服务
音视频通话 RTC
便捷的跨平台实时音视频互动直播服务
媒体处理 MPC
简洁的云媒体转码及内容合成处理服务
视频工具
视频工具SDK
视频剪辑SDK | 播放SDK
人工智能
内容审核
内容审核
图片审核|文本审核|音频审核|视频审核
人脸与人体识别
人脸人体识别
人脸识别|人体识别|人脸比对|摔倒检测
OCR识别
OCR识别
卡证识别|通用文本识别|车牌识别
图像技术
图像技术
面向图片场景提供的多种人工智能技术
AI开发平台
零门槛AI开发平台
AI能力定制平台
AI市场
模型市场
图片、音频、视频等多场景的算法模型
物联网
物联网视频
帝视物联网视频 SDK
低延时、海量存储的物联网视频监控服务
物联网平台
企业物联网平台
设备管理|设备接入|规则引擎|应用开发
生活物联网平台
生活物联网平台
针对消费级智能设备的物联网平台
物联网边云融合
智能边缘
边云协同操作系统
基础PaaS
网络与CDN
内容分发网络 CDN
安全、稳定、低延时的分发加速服务
P2P内容分发网络 PCDN
利用闲置资源而构建的低成本高品质CDN
动态加速 DCDN
动态获取内容,提升加载速度的加速服务
主站加速WSA
动静混合站点的加速服务
应用开发
云短信 SMS
融合三网,安全可信的短信服务
360PAY
一站式支付解决方案
消息推送 360PUSH
高效、精确、实时的消息推送
研发运维
研发效能
兼容性测试
提供数百款TOP机型的云测服务
真机租用
远程真机租用,流畅体验如手机在手
ios预审
智能扫描、分析、筛查ios审核的被拒风险点
企业应用
视频应用
幕印企业学堂
企业培训|内容付费|知识营销
视图计算
云边融合 AI赋能的智能视图计算
易讲教室直播
视频技术与传统教室融合
企业工具
亿方云企业网盘
在线编辑、文件管理、知识管理
APIcloud
提供安全可靠的加固防护产品及服务
统一身份认证平台
API文档、调试、MOCK一体化协作平台
电子签章
无纸办公,远程签署各种电子合同
安全应用
SSL证书
一站式的 HTTPS 解决方案
三六零天御加固保
提供安全可靠的加固防护产品及服务
专有部署
云计算
360Stack云计算管理平台
规划、建设、运维一体的云计算解决方案
大数据
奇麟大数据
企业级一站式大数据平台
智能网关
奇盾Api网关
全托管的API网关服务
容器服务
360容器管理平台
可对外私有化的容器云平台
AI开发平台
360AI开发平台
全流程机器学习开发平台
更多产品,敬请期待
解决方案
产品解决方案
行业解决方案
产品解决方案
视频
通用直播解决方案
短视频解决方案
公共语音房聊天室解决方案
物联网
儿童手表音视频通话
云端NVR解决方案
数据上云
通用存储解决方案
IoT设备
AI+IPC解决方案
智能门锁解决方案
安防传感解决方案
智能网关解决方案
个护健康解决方案
账号体系
360用户帐号体系解决方案
行业解决方案
智慧城市
智慧社区解决方案
智慧交通解决方案
电商视频解决方案
电商视频解决方案
电商平台收款解决方案
教育
在线教育解决方案
互动课堂解决方案
全屋智能
智慧公寓解决方案
智慧酒店解决方案
家庭智能解决方案
智慧安防解决方案
医疗
健康看护解决方案
智能制造
工业物联网解决方案
游戏
游戏音视频解决方案
更多解决方案,敬请期待
帮助支持
技术社区
关于我们
控制台
登录
注册
SDK管理
云直播
产品文档
常见问题
API文档
云点播
产品文档
快速入门
API文档
CDN
产品文档
API文档
云存储
产品文档
SDK手册
API文档
互动直播
产品文档
API文档
操作指南
SDK管理
播放SDK
上传SDK
剪辑SDK
媒体处理
产品文档
API文档
帝视
产品文档
API文档
操作指南
支付平台
产品列表
产品文档
渠道接入解析
内容审核
产品文档
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
VCloudPlayer
拍摄SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
剪辑SDK
iOS
版本说明
开发文档
Android
开发文档
版本说明
投屏SDK
iOS
开发文档
Android
开发文档
播放SDK
iOS
开发文档
版本说明
Android
开发文档
版本说明
Web 上传SDK
首页
>
开发者中心
>
SDK管理
>
Windows互动直播
>
开发文档
### Windows互动直播开发文档 ### Windows互动直播SDK简单介绍 智汇云以SDK形式提供互动直播,可以帮助开发者快速实现互动直播能力。SDK包含头文件、lib、dll库、demo及开发文档。开发者可参考文档或demo,将lib和dll库加入demo的工程中,完成相关配置,调用相关的API即可完成Windows的互动直播服务。 ## 功能说明: | **系统特性** | **支持内容** | |----------------|---------------------------------------------------------------------| | **系统版本** | **Windows 7及以上** | | **流媒体协议** | **私有协议** | | | **参数设置** | **互动时的分辨率、码率、帧率等** | | **编码方式** | **H264** | | **设备驱动** | **摄像头、麦克风、耳机** | ### SDK集成 #### 下载SDK sdk下载链接:[https://zyun.360.cn/developer](https://live.360.cn/index/sdkdownload) - include > QHVCSdk.h > QHVCSdkConstant.h > QHVCInteract.h > QHVCInteractCallback.h > QHVCInteractConstant.h - lib > qhvc_tools.lib > qhvc_interact.lib - dll > qhvc_interact.dll > agora_rtc_sdk.dll > agora_sig_sdk.dll > zegoavkit.dll demo下载链接:[https://github.com/360livecloud/windows_demo.git](https://github.com/360livecloud/windows_demo.git) #### 开发环境要求 > Microsoft Visual C++ 2013 或以上版本 > Microsoft Windows 7 或以上版本 #### 配置说明 > 将 SDK/include 目录添加到项目的 INCLUDE 目录下。 > 将 SDK/lib 目录放入项目的 LIB 目录下,并确保 qhvc_tools.lib、qhvc_interact.lib 与项目连接。 > 将 SDK/dll 下的 dll 文件复制到你的可执行文件所在的目录下。 #### SDK初始化 需要调用` QHVC::QHVCSdk::Init();`,接口说明如下: - businessId是为业务分配的应用ID(businessId获取地址:登录[智汇云官网](https://zyun.360.cn/)-SDK控制台-应用管理-创建应用) - version为业务端APP的版本号; - userId为业务方用户标识,只要保证唯一即可。 > 对businessId和channelID这两个参数的引入,在设计之初目的是为了每个业务有独立的ID,通过businessId来获取云端的一些参数控制,特别是视频缓冲策略、P2P行为、硬解码黑白名单以及解码库类型;channelID更多的为数据统计打点的唯一标注,可以通过云点播和云直播的服务标识来获取,以此获取播放数据反馈。UserID的设计是为了业务方和智汇云唯一的沟通桥梁,只要保持唯一即可,一般为用户ID的加密字符串,通过UserID可以排查到一个用户的级别的失败日志。 ``` QHVC::QHVCSdk::QHVCSdkConfig sdkConfig; _snprintf_s(sdkConfig.szMachineId, ARRAYSIZE(sdkConfig.szMachineId), _TRUNCATE, "%s", "MachineId"); _snprintf_s(sdkConfig.szAppVersion, ARRAYSIZE(sdkConfig.szAppVersion), _TRUNCATE, "%s", "AppVersion"); _snprintf_s(sdkConfig.szUserId, ARRAYSIZE(sdkConfig.szUserId), _TRUNCATE, "%s","UserId"); _snprintf_s(sdkConfig.szCacheDir, ARRAYSIZE(sdkConfig.szCacheDir), _TRUNCATE, "%s", "Path"); _snprintf_s(sdkConfig.szBusinessId, ARRAYSIZE(sdkConfig.szBusinessId), _TRUNCATE, "%s", "BusinessId"); QHVC::QHVCSdk::Init(&sdkConfig); ``` #### 调试 为便于接入时定位问题,可以在开发版本中打开日志,相关TAG为QHVC_INTERACT。 ``` QHVC::QHVCSdk::SetLogLevel(QHVC::QHVCSdk::LOG_LEVEL_DEBUG); ``` ### 业务流程图 以下假设第一个进入直播间的用户为主播,之后进入直播间的用户为嘉宾。 #### 主播创建互动直播 ``` graph TD A(开始) --> c(加载互动直播引擎) c --> d d{是否成功加载引擎} d -->|成功| e(设置互动直播相关参数) d -->|失败|j e --> f(加入互动直播通话频道) f -->k k{是否成功加入频道} k -->|成功| g(启动本地视频预览) k -->|失败| j g -->h(嘉宾加入后调用引擎显示对方视图) h -->i(完成互动) i -->j(释放资源) j -->l(退出结束) ``` #### 嘉宾加入互动直播 ``` graph TD A(开始) --> c(加载互动直播引擎) c --> d d{是否成功加载引擎} d -->|成功| e(设置互动直播相关参数) d -->|失败|j e --> f(加入互动直播通话频道) f -->k k{是否成功加入频道} k -->|成功| g(启动远端视频预览观看主播) k -->|失败| j g -->h(调用引擎启动本地预览) h -->i(完成互动) i -->j(释放资源) j -->l(退出结束) ``` ### 接口说明 #### 初始化互动直播类 可参考demo工程中InteractAnchorDlg.cpp。 ``` /** * 设置公共业务信息该方法需要在所有实例方法之前调用,用于设置业务所需要的一些必要信息,便于业务区分、统计使用。 * * @param channelId 渠道Id,用于区分公司或部门下拥有多款应用。由直播云为应用程序开发者签发,如果没有,请向直播云申请。 * @param appKey 直播云为应用程序开发者签发的App Key。如果没有,请向直播云申请。 * @param userSign 用户签名。开发者需结合直播云提供的算法生成此 User Sign,用于服务器端用户验证。 */ QHVC::INTERACT::QHVCInteract::SetPublicServiceInfo(channelId, appKey, userSign); ``` #### 加载直播引擎并设置回调 ``` /** * 加载互动直播引擎数据,进行准备工作。调用该方法前,必须先调用setPublicServiceInfo进行业务信息准备, * 必须在该方法调用后才能调用其它实例方法。该方法是异步执行,待回调执行之后才能执行其它实例方法。 * * @param roomId 房间Id * @param userId 用户id * @param sessionId 会话ID,用于标识业务会话请求,每一次完整的流程之后,该值需要重新设置 * @param optionInfo 可选字典,使用json串。若需旁路直播功能等可通过该字典设置,如果业务准备使用智汇云的直播服务, * 可以通过applyforBypassLiveAddress接口申请推流服务; * 例如: {"push_addr":"xxx", "pull_addr":"xxxx"},具体参数参见 * {@link QHVC#INTERACT#ENGINE_OPTION}定义。 * @param interactCallBack 回调 * @return 0:表示成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC::INTERACT::QHVCInteract::LoadEngine(roomId, userId, sessionId, option, pQHVCInteractCallback); ``` pQHVCInteractCallback:继承SDK回调类IQHVCInteractCallback,用于回调SDK返回的消息,具体请查看Demo中QHVCInteractCallbackImpl类。 #### 设置互动直播参数 ``` //设置频道模式 QHVC::INTERACT::QHVCInteract::SetChannelProfile(QHVC::INTERACT::CHANNEL_PROFILE_LIVE_BROADCASTING); //开启视频模式 if (!IsAudioMode()) { QHVC::INTERACT::QHVCInteract::EnableVideo(); } //设置视频编码属性 QHVC::INTERACT::QHVCInteract::SetVideoProfile((QHVC::INTERACT::VIDEO_PROFILE)profileMode, false); //设置用户模式 QHVC::INTERACT::QHVCInteract::SetClientRole(QHVC::INTERACT::CLIENT_ROLE_BROADCASTER); ``` #### 开启本地预览 ``` QHVC::INTERACT::QHVCInteract::SetupLocalVideo(hwnd, QHVC::INTERACT::RENDER_MODE_FIT, uid); QHVC::INTERACT::QHVCInteract::StartPreview(); ``` #### 加入频道房间 ``` QHVC::INTERACT::QHVCInteract::JoinChannel(); ``` #### 绑定远程用户和显示视图 ``` QHVC::INTERACT::QHVCInteract::SetupRemoteVideo(hwnd, QHVC::INTERACT::RENDER_MODE_FIT, uid, ""); ``` #### 摄像头操作 ``` //获取摄像头列表 int count = 0; QHVC::INTERACT::DeviceInfo* pVideoDeviceInfos = QHVC::INTERACT::QHVCInteract::GetVideoDeviceList(count); // 设置要使用的摄像头 QHVC::INTERACT::QHVCInteract::SetVideoDevice(deviceId); // 启用/关闭本地摄像头 QHVC::INTERACT::QHVCInteract::EnableLocalVideo(true); ``` #### 扬声器操作 ``` // 获取扬声器列表 int count = 0; QHVC::INTERACT::DeviceInfo* pAudioDeviceInfos = QHVC::INTERACT::QHVCInteract::GetAudioDeviceList(QHVC::INTERACT::AUDIO_DEVICE_OUTPUT, count); bool mute = false; // 获取当前扬声器是否静音 QHVC::INTERACT::QHVCInteract::GetAudioDeviceMute(QHVC::INTERACT::AUDIO_DEVICE_OUTPUT, mute); // 设置当前扬声器是否静音 QHVC::INTERACT::QHVCInteract::SetAudioDeviceMute(QHVC::INTERACT::AUDIO_DEVICE_OUTPUT, !mute); int volume = 0; // 获取当前扬声器音量 QHVC::INTERACT::QHVCInteract::GetAudioDeviceVolume(QHVC::INTERACT::AUDIO_DEVICE_OUTPUT, volume); // 设置当前扬声器音量 QHVC::INTERACT::QHVCInteract::SetAudioDeviceVolume(QHVC::INTERACT::AUDIO_DEVICE_OUTPUT, value); ``` #### 获取麦克风列表 ``` int count = 0; QHVC::INTERACT::DeviceInfo* pMicroDeviceInfos = QHVC::INTERACT::QHVCInteract::GetAudioDeviceList(QHVC::INTERACT::AUDIO_DEVICE_INPUT, count); bool mute = false; // 获取当前麦克风是否静音 QHVC::INTERACT::QHVCInteract::GetAudioDeviceMute(QHVC::INTERACT::AUDIO_DEVICE_INPUT, mute); // 设置当前麦克风是否静音 QHVC::INTERACT::QHVCInteract::SetAudioDeviceMute(QHVC::INTERACT::AUDIO_DEVICE_INPUT, !mute); int volume = 0; // 获取当前麦克风音量 QHVC::INTERACT::QHVCInteract::GetAudioDeviceVolume(QHVC::INTERACT::AUDIO_DEVICE_INPUT, volume); // 设置当前麦克风音量 QHVC::INTERACT::QHVCInteract::SetAudioDeviceVolume(QHVC::INTERACT::AUDIO_DEVICE_INPUT, value); ``` #### 暂停/恢复发送本地音频流 ``` QHVC::INTERACT::QHVCInteract::MuteLocalAudioStream(mute); ``` #### 暂停/恢复发送本地视频流 ``` QHVC::INTERACT::QHVCInteract::MuteLocalVideoStream(mute); ``` #### 暂停/恢复远端音频流 ``` QHVC::INTERACT::QHVCInteract::MuteRemoteAudioStream(uid, mute); ``` #### 暂停/恢复远端视频流 ``` QHVC::INTERACT::QHVCInteract::MuteRemoteVideoStream(uid, mute); ``` #### 离开房间 ``` QHVC::INTERACT::QHVCInteract::LeaveChannel(); ``` #### 释放回收 ``` //释放互动直播引擎 QHVC::INTERACT::QHVCInteract::ReleaseEngine(); ``` 更多详细接口请参考[API接口文档](https://live.360.cn/developer/doc?page_id=72&item_id=5)及DEMO。 ### 高级功能 #### 双流模式 为减小视频延迟、节约带宽和计算资源、提升用户体验,智汇云互动直播SDK支持双流模式,默认为单流模式,业务方需调用API接口手动开启并设置小流参数。 ``` /** * 使用双流/单流模式 * * @param enabled 指定双流或者单流模式 true:双流 false:单流(默认) * @return 0成功,非0失败 */ QHVC::INTERACT::QHVCInteract::EnableDualStreamMode(boolean enabled); ``` ``` /** * 设置小流的参数(仅在开启双流模式时有效) * 小流分辨率需要和大流的成比例,比如大流 360*640,小流可以设置 180*320,小流不要设置太大。 * 注: 请确保在joinChannel之前调用。 * * @param width 视频的宽度 * @param height 视频的宽度 * @param fps 帧率 * @param bitrate 码率 (单位:kbps) * @return 0成功,非0失败 */ QHVC::INTERACT::QHVCInteract::SetLowStreamVideoProfile(int width, int height, int fps, int bitrate); ``` ``` /** * 视频大小流切换, 该方法指定接收远端用户的视频流大小。使用该方法可以根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。本方法调用状态将在下文的SDK 默认收到视频小流,节省带宽。如需使用视频大流,调用本方法进行切换。 * * @param uid 用户ID * @param streamType 设置视频流大小。QHVCInteractConstant.VIDEO_STREAM_HIGH (0): 视频大流;QHVCInteractConstant.VIDEO_STREAM_LOW (1): 视频小流 * @return 0成功,非0失败 */ QHVC::INTERACT::QHVCInteract::SetRemoteVideoStream(String uid, int streamType); ``` #### 合流 ``` /** * n+m路转推(n路分流+m路合流),合流信息预设接口,请确保要在joinChannel之前调用。 * * @param mixStreamConfig 合流设置 * @param streamLifeCycle 合流任务的生命周期,可以绑定主播或绑定房间 * @return 0成功,非0失败 */ QHVC::INTERACT::QHVCInteract::SetMixStreamInfo(const MixStreamConfig* mixStreamConfig, STREAM_LIFE_CYCLE streamLifeCycle); ``` ``` /** * 更新合流的视频布局(即画中画布局) * * @param mixStreamInfos 布局信息,请确保设置所有的视频流,包括主播的视频流。 * @param count mixStreamInfos数组的大小。 * @return 0成功,非0失败 */ QHVC::INTERACT::QHVCInteract::SetVideoCompositingLayout(const MixStreamRegion* mixStreamInfos, int count); ``` #### 外部渲染 ``` /** * 设置本地视频外部渲染(即业务端渲染)的视频数据回调接口 * @param pCallback 本地视频回调的callback,可以通过处理回调,调整本地采集视频的数据,如实现美颜、自渲染,数据替换(自采集)等{@link QHVC#INTERACT#IQHVCInteractLocalVideoRenderCallback} * * @return 0: 方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetLocalVideoRenderCallback(IQHVCInteractLocalVideoRenderCallback* pCallback); /** * 设置远端视频外部渲染(即业务端渲染)的视频回调接口 * @param pCallback 远端视频回调的callback, 可以通过处理回调,实现自渲染等{@link QHVC#INTERACT#IQHVCInteractRemoteVideoRenderCallback} * * @return 0: 方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetRemoteVideoRenderCallback(IQHVCInteractRemoteVideoRenderCallback* pCallback); /** * 该方法设置音频数据对外回调的callback * @param pCallback 声音数据回调{@link QHVC#INTERACT#IQHVCInteractAudioFrameCallback} * * @return 0: 方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetAudioFrameCallback(IQHVCInteractAudioFrameCallback* pCallback); ``` #### 屏幕捕获 ``` /** * 开启屏幕共享,该方法共享整个屏幕,指定窗口,或指定区域: * 共享整个屏幕: 将 hWnd 设为 0,且将 rect 设为 null * 共享指定窗口: 将 hWnd 设为非 0,每个窗口都有一个非 0 的 hWnd * 共享指定区域: 将 hWnd 设为 0,且将 rect 设为非 null。这里的 共享指定区域 指的是共享整个屏幕里的某个区域,目前暂不支持共享指定窗口里的指定区域 * * @param hWnd 窗口句柄,为空时表示整个屏幕 * @param captureFreq 共享屏幕的帧率,取值1~15 * @param rect 屏幕指定区域,仅在 hWnd=null 时有效 * @param bitrate 共享屏幕的码率,单位kbps,若设置为0,由SDK根据共享屏幕的分辨率及帧率计算码率 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StartScreenCapture(HWND hWnd, int captureFreq, const RECT* rect, int bitrate = 0); /** * 停止屏幕共享 * * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StopScreenCapture(); /** * 更新屏幕截图区域 * * @param rect 只有在调用 startScreenCapture() 时将 hWnd 设为 0 时,该参数才有效。当 rect 设置为 null 时, 共享整个屏幕 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int UpdateScreenCaptureRegion(const RECT *rect); ``` ### 伴奏 ``` /** * 开始播放伴奏,指定本地音频文件来和麦克风采集的音频流进行混音或替换(用音频文件替换麦克风采集的音频流), * 可以通过参数选择是否让对方听到本地播放的音频和指定循环播放的次数 * * @param filePath 本地音频文件路径 * @param loopback true 仅允许本地听到本地播放的音频 * false 允许本地和对方听到本地播放的音频 * @param replace true 本地播放的音频替换麦克风采集的音频 * false 本地播放的音频和麦克风采集的音频进行混音 * @param cycle 循环播放次数,-1表示无限循环 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StartAudioMixing(const char* filePath, bool loopback, bool replace, int cycle); /** * 停止播放伴奏 * * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StopAudioMixing(); /** * 暂停播放伴奏 * * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int PauseAudioMixing(); /** * 恢复播放伴奏 * * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int ResumeAudioMixing(); /** * 调节伴奏音量 * * @param volume 伴奏音量,范围0-100,默认100 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int AdjustAudioMixingVolume(int volume); /** * 获取伴奏时长,单位毫秒 * * @return 返回伴奏时长,0表示失败 */ QHVC_API int GetAudioMixingDuration(); /** * 获取伴奏播放进度,单位毫秒 * * @return 返回当前播放进度,0表示失败 */ QHVC_API int GetAudioMixingCurrentPosition(); /** * 设置伴奏播放位置,单位毫秒 * * @param position 播放位置,单位毫秒 * @param * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetAudioMixingPosition(int position); ``` ### 音效 ``` /** * 该方法获取音效的音量,范围为 [0.0, 100]。 * @return 音效的音量 */ QHVC_API int GetEffectsVolume(); /** * 该方法设置音效的音量。 * @param volume 音量, 取值范围为 [0.0, 100]。 100.0为默认值 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetEffectsVolume(int volume); /** * 该方法实时调整指定音效的音量。 * @param soundId 指定音效的 ID。每个音效均有唯一的 ID * @param volume 取值范围为 [0.0, 100]。 100 为默认值 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int SetVolumeOfEffect(int soundId, int volume); /** * 该方法播放指定音效。 * @param soundId 指定音效的 ID。每个音效均有唯一的ID。如果你已通过 preloadEffect 将音效加载至内存,确保这里设置的 soundId 与 preloadEffect 设置的 soundId 相同。 * @param filePath 音效文件的绝对路径 * @param loopCount 设置音效循环播放的次数: * 0:播放音效一次 * 1:循环播放音效两次 * -1:无限循环播放音效,直至调用 stopEffect 或 stopAllEffects 后停止 * @param pitch 设置音效的音调 取值范围为 [0.5, 2]。默认值为 1.0,表示不需要修改音调。取值越小,则音调越低 * @param pan 设置是否改变音效的空间位置。取值范围为 [-1, 1]: * 0:音效出现在正前方 * -1:音效出现在左边 * 1:音效出现在右边 * @param gain 设置是否改变单个音效的音量。取值范围为 [0.0, 100.0]。默认值为 100.0。取值越小,则音效的音量越低 * @param publish 设置是否将音效传到远端: * true:音效在本地播放的同时,会发布到云上,因此远端用户也能听到该音效 * false:音效不会发布到云上,因此只能在本地听到该音效 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int PlayEffect(int soundId, const char* filePath, int loopCount, double pitch, double pan, double gain, bool publish); /** * 该方法停止播放指定音效。 * @param soundId 指定音效的 ID。每个音效均有唯一的 ID * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StopEffect(int soundId); /** * 该方法停止播放所有音效。 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int StopAllEffects(); /** * 预加载音效 * 该方法将指定音效文件(压缩的语音文件)预加载至内存。 * @param soundId 指定音效的 ID。每个音效均有唯一的 ID * @param filePath 音效文件的绝对路径 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int PreloadEffect(int soundId, const char* filePath); /** * 该方法将指定预加载的音效从内存里释放出来。 * @param soundId 指定音效的 ID。每个音效均有唯一的 ID * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int UnloadEffect(int soundId); /** * 该方法暂停播放指定音效。 * @param soundId 指定音效的 ID。每个音效均有唯一的 ID * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int PauseEffect(int soundId); /** * 该方法暂停播放所有音效。 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int PauseAllEffects(); /** * 该方法恢复播放指定音效。 * @param soundId 指定音效的 ID。每个音效均有唯一的ID。 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int ResumeEffect(int soundId); /** * 恢复播放所有音效。 * @return 0:方法调用成功,其他表示失败,见{@link QHVC#INTERACT#ERR} */ QHVC_API int ResumeAllEffects(); ``` ### 错误码说明 调用QHVC::INTERACT::QHVCInteract::LoadEngine()后,IQHVCInteractCallback::OnError(int errType, int errCode)函数回调,详细调用方法见[加载直播引擎并设置回调](#加载直播引擎并设置回调)。 ERR_TYPE 值含义: | **值** | **对应消息** | |--------|----------------------------------------| | 3601 | 加入频道错误 | | 3602 | 连麦中错误 | | 3603 | 加载引擎错误 | ERR 值含义: | **值** | **对应消息** | |--------|----------------------------------------| | 4001 | 参数缺失 | | 4101 | 服务内部异常 | | 4102 | 请求已过期 | | 4103 | 签名验证失败 | | 4201 | sname 不存在 | | 4202 | sname 未开通服务 | | 4302 | 加入房间失败 | | 4303 | 退出房间失败 | | 4304 | 获取房间信息失败 | | 4305 | 更新成员属性失败 | | 4306 | 更新房间属性失败 | | 4307 | 心跳更新失败 | | 4308 | 房间已存在 | | 4309 | sname 不可用 | | 4310 | 生成连麦信息失败 | | 4311 | 没有可用的连麦配置 | 其他错误码请参考SDK QHVCInteractConstant.h头文件 *QHVC::INTERACT::ERR* 的定义。
即刻开始使用
只需完成注册与实名认证,即可体验我们的贴心服务
立即使用
请您联系我们
邮箱
g-zyun@360.cn
电话
010-56821952
小安提醒您
试用小安,请确保该账户已通过智汇云实名认证
前往认证中心>>
1对1免费
咨询智汇云专属顾问
为您量身定制产品解决方案
您的姓名 :
手机号 :
公司名称(选填) :
相关产品 :
留言内容 :
需求描述
产品建议
其他
提交
登录后才可以留言哦
立即登录
去注册账号