华为云用户手册

  • 可信服务 可信服务 可信服务是指可与Organizations服务集成,提供组织级管理能力的华为云服务。启用华为云服务为可信服务后,可信服务会在成员账号中创建一个服务关联委托,该委托允许可信服务在成员账号中拥有执行可信服务文档中所述任务的权限,相当于云服务能力在多账号组织场景下的拓展。目前支持的可信服务请参见:已对接组织的可信服务列表。 委托管理员账号 委托管理员账号是一个组织中有特殊权限的成员账号。管理账号可指定某个成员账号成为某个可信服务的委托管理员账号。成为委托管理员账号后,该账号下的用户可以使用对应可信服务的组织级管理能力。
  • 组织的组成元素 组织 为管理多账号关系而创建的实体。一个组织由管理账号、成员账号、根组织单元、组织单元(Organizational Unit,以下简称OU)四个部分组成。一个组织有且仅有一个管理账号,若干个成员账号,以及由一个根组织单元和多层级组织单元组成的树状结构。成员账号可以关联在根组织单元或任一层级的组织单元。 根组织单元 当您开通Organizations云服务并创建组织后,系统会为您自动生成根组织单元。根组织单元位于整个组织树的顶端,组织由根组织单元向下关联组织单元和账号。 组织单元 组织单元是可以理解为成员账号的容器或分组单元,通常可以映射为企业的部门、子公司或者项目组等。组织单元可以嵌套,一个组织单元只能有一个父组织单元,一个组织单元下可以关联多个子组织单元或者成员账号。 管理账号 管理账号是标准的华为云账号。企业管理员在管理账号中,使用Organizations服务创建组织,并管理组织中其他账号。在管理账号中还可以管理整个组织的相关策略和可信服务。 成员账号 当启用Organizations服务后,通过Organizations服务邀请加入或直接创建的账号称为成员账号。成员账号可以关联在根组织单元或者任一个组织单元下。 邀请 邀请其他账号加入组织的过程。邀请只能由管理账号发出,被邀请账号只有接受邀请后,才会加入组织。通过邀请加入组织的账号,原财务关系不会调整,保留原有企业主子账号之间的财务模式。
  • clinetid一致,接口返回的(success=false, mssg={error=invalid_client, error_description=Bad client credentials}, t=null) 检查入参的DomainName和clientSecret与ISV数据库保存的数据是否一致,若clientSecret与ISV数据库保存的数据不一致,原因可能是传递的参数没做解密。 父主题: 开发相关
  • 租户同步是什么时候触发? 买家侧是购买完商品后,将商品和组织绑定的时候同步,同时会调用租户信息同步接口、租户应用信息同步接口、组织部门同步(全量)接口。 卖家侧是申请应用凭证的时候会同步租户信息同步接口、租户应用信息同步接口、组织部门同步(全量)接口。 买家给账号授权访问应用和卖家申请测试账号的时候会调用租户应用授权信息同步接口。 买家商品绑定组织后,在组织下变更部门的时候会调用组织部门信息同步(增量)接口。 父主题: 开发相关
  • 如何获取企业邀请码? 企业管理员在管理后台开启邀请设置,用户可以通过邀请码直接在前台登录页面进行注册,便于普通成员通过自注册的方式加入目标单位或部门,具体获取方式如下。 在“通讯录”页面,在左侧通讯录选择需要邀请成员的部门。 在界面右上角选择“邀请成员加入本组织”。 如果出现“当前部门的邀请功能已停用”界面,单击“启用”。 进入邀请成员界面后,即可获得企业邀请码、企业链接及企业二维码,如图1所示。 图1 企业邀请码、企业链接、企业二维码 在“ 邀请设置”区域,可以进一步对邀请有效期进行设置。 图2 邀请设置 进入“注册完成按钮配置”,您可以单击操作列的“编辑”,选择是否开启“注册完成按钮配置”。 开启:可自行配置当前租户邀请链接完成注册后页面的独立按钮。设置按钮文字、跳转链接后单击“保存”。以web端为例,页面效果如图3所示。 按钮文字至多显示5个汉字或字母。 图3 设置独立按钮 关闭:不配置完成注册后页面的独立按钮,即页面只显示一个按钮,以web端为例,页面效果如图4所示。 图4 未设置独立按钮 设置完成后,将企业邀请码、企业链接或企业二维码分享给需要邀请的用户。 用户在用户门户登录页面选择“注册账号”,输入企业邀请码,或直接进入企业邀请链接,输入用户信息后即可加入企业。 邀请成员后,您可以单击“查看申请人列表”查看申请情况,也可以单击“停用邀请”使邀请信息失效,如图5所示。 图5 查看申请人列表 父主题: 账号与登录
  • 单点登录获取code失败,接口返回:success=false, mssg={error=invalid_client, error_description=Client ID mismatch} 通过F12查看触发的code请求接口拿到clientId,跟ISV数据库应用信息表的clientid对比发现不一致。 解决方法:需要重新触发绑定租户,触发租户同步,应用同步和组织机构同步(全量)。 父主题: 开发相关
  • 处理步骤 检查返回结果: 检查resultCode是不是六个0。 检查body签名的key的获取是否正确,计算签名值的时候不要key+timeStamp,只要key。 检查body是不是json字符串格式{" resultCode": "000000"," resultMsg": "Success"}。 检查返回方式,body需放到response里:response.getWriter().print(body)。 检查返回内容,是不是定义的返回结果字段。
  • 背景信息 在外部请求激增、负载突变等场景下,极易出现应用性能问题,比如外部请求响应变慢、部分请求异常等。快速识别发现、定位处理应用性能问题成为越来越常见的日常运维场景。 APM 作为云应用性能问题诊断服务,拥有强大的分析工具,通过拓扑图、调用链、事务分析可视化地展现应用状态、调用过程、用户对应用的各种操作,快速定位问题和改善性能瓶颈。 例如,通过APM拓扑功能可视化服务间的调用关系,迅速找到有问题的实例;通过APM调用链功能下钻到服务内部,抓取到有问题的方法调用链路,确认问题根因。
  • 什么是LakeFormation 湖仓构建 (DataArts Lake Formation,简称LakeFormation)是企业级 数据湖 一站式构建服务。 在存算分离架构基础上提供数据湖元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型,支持对接 MapReduce服务 MRS )、 数据仓库 服务 GaussDB (DWS)、 数据湖探索 DLI )、 AI开发平台 ModelArts、 数据治理中心 DataArts Studio 等多种计算引擎及大数据云服务,使用户可以便捷高效地构建数据湖和运营相关业务,加速释放业务数据价值。 LakeFormation产品通过底层资源实现跨AZ部署及高可靠、弹性伸缩、元数据统一管理、元数据与文件目录联动授权、对接多计算引擎等功能,是一个Serverless服务。
  • 什么是区域和可用区 通常用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region)指物理的数据中心。每个区域完全独立,这样可以实现一定程度的容错能力和稳定性。资源创建成功后不能更换区域。 可用区(AZ,Availability Zone)是同一区域内,电力和网络互相隔离的物理区域,一个可用区不受其他可用区故障的影响。一个区域内可以有多个可用区,不同可用区之间物理隔离,但内网互通,既保障了可用区的独立性,又提供了低价、低时延的网络连接。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 如何获取AK/SK AK/SK(Access Key ID/Secret Access Key)即访问密钥,包含访问密钥ID(AK)和秘密访问密钥(SK)两部分,系统通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 登录华为云管理控制台。 将鼠标移动到右上角用户名,在下拉列表中单击“我的凭证”。 在“我的凭证”页面中选择“访问密钥”。 单击“新增访问密钥”,进入“新增访问密钥”页面。 根据提示输入对应信息,单击“确定”,在弹出的提示页面单击“立即下载”。 下载成功后,打开凭证文件,获取AK/SK信息。 为保证访问密钥的安全,访问密钥仅在初次生成时自动下载,后续不可再次通过管理控制台界面获取。请在生成后妥善保管。
  • 什么是项目 云的每个区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以区域默认单位为项目进行授权, IAM 用户可以访问您账号中该区域的所有资源。 如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得IAM用户仅能访问特定子项目中的资源,使得资源的权限控制更加精确。 项目中的资源不能转移。
  • LakeFormation适用哪些场景 LakeFormation适用于以下场景: 数据湖建设和持续运营:数据湖建设和持续运营,是指数据湖的初始化建设及后续日常的海量元数据及权限管理,因此客户需要便捷高效的建设和管理方式。 多计算引擎共享元数据:多计算引擎共享元数据,是指客户的多种计算引擎(Hive、Spark等)均使用统一的元数据,最大化实现数据的共享,避免不必要的重复数据,更大程度释放业务数据价值。
  • 功能描述 用户在入会前可通过调用enableTopThreeAudioMode切换为音频最大三方模式。 会中通过调用switchAudioMode(2)将音频切换为订阅模式。订阅模式下,本地用户必须通过主动订阅远端用户音频流,才可接收该用户音频。 会中通过调用switchAudioMode(3)将音频切换为最大三方模式。最大三方模式下,本地用户不需要单独主动订阅某个远端用户音频流,即可接收当前房间内声音最大的三个用户的音频。
  • 实现播放音乐文件 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 播放音乐文件 调用startAudioFile播放音乐文件,目前仅支持本端播放。 返回值为0,则说明调用成功,不为0则表示失败。 public void startAudio() { int ret = mHwRtcEngine.startAudioFile(audioFilePaths[currentFilePos], publish, cycle, replace); if (ret == 0) { // 成功 } else { // 失败 }} 设置音乐文件音量 调用adjustAudioFileVolume调整播放音量。 其中,progress取值范围为0 ~ 100。 public void setAudioVolume() { mHwRtcEngine.adjustAudioFileVolume(progress);} 获取音乐文件总时长 播放过程中,调用getAudioFileDuration获取音乐文件总时长,可用于刷新界面上的进度条。 public void refreshSeekBar() { int duration = mHwRtcEngine.getAudioFileDuration();// 刷新进度条} 获取音乐文件播放位置 播放过程中,调用getAudioFilePosition获取音乐文件当前播放位置,可用于刷新界面上的进度条。 public void refreshSeekBar() { int pos = mHwRtcEngine.getAudioFilePosition();// 刷新进度条} 设置音乐文件播放位置 播放过程中,调用setAudioFilePosition设置音乐文件播放位置,可用于跳转至对应播放位置。 public void seekTo() { mHwRtcEngine.setAudioFilePosition(pos);} 暂停播放音乐文件 播放过程中,调用pauseAudioFile暂停播放当前音乐文件。 public void pauseAudio() { mHwRtcEngine.pauseAudioFile();} 恢复播放暂停的音乐文件 暂停时,调用resumeAudioFile恢复播放当前音乐文件。 public void resumeAudio() { mHwRtcEngine.resumeAudioFile();} 停止播放音乐文件 播放过程中,调用stopAudioFile停止播放当前音乐文件。 public void stopAudio() { mHwRtcEngine.stopAudioFile();} 音乐文件播放结束回调 播放结束后,SDK会触发onAudioMixStateChangedNotify回调来通知上层应用。 @Overridepublic void onAudioMixStateChangedNotify(HRTCEnums.HRTCAudioFileState state, HRTCEnums.HRTCAudioFileReason reason, long value) { // 判断state,如果是HRTC_AUDIO_FILE_STOPPED,则表示收到音乐文件播放结束通知,可以刷新界面,比如恢复播放前初始界面状态。}
  • 实现过程 加入房间前调用主引擎的setExternalVideoCapture 加入房间前调用此接口打开视频自采集功能。一旦开启后,将无法切换。 //开启自采集功能[rtcEngine setExternalVideoCapture:YES]; 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 定时推送视频数据帧 加入房间成功回调后,上层应用需要定时调用pushExternalVideoFrame接口推送外部视频数据,每1/帧率调用一次。 //初始化一个HWRtcVideoFrame对象,参数以实际为主,传rtcEngineHWRtcVideoFrame *rtcVideoFrame = [[HWRtcVideoFrame alloc] init]; rtcVideoFrame.format =HWRtcVideoImageFormatYUV420P; rtcVideoFrame.width = width; rtcVideoFrame.height = height; rtcVideoFrame.data = data; rtcVideoFrame.dataLen = data.length; [_rtcEngine pushExternalVideoFrame:rtcVideoFrame];
  • 实现过程 加入房间前设置音频最大三方模式 入会前调用enableTopThreeAudioMode设置是否开启音频最大三方模式。true表示开启音频最大三方,false表示不开启。 示例代码如下: this.client.enableTopThreeAudioMode(true) 加入房间 参考接口调用流程中加入房间的时序图步骤。 设置音频最大三方音量值 调用setVolume4TopThree接口可以设置音频最大三方模式的音量值,取值范围为[0,100]。 示例代码如下: // volume:音量值let volume = 50this.client.setVolume4TopThree(volume) 开启/禁用音频最大三方模式的音轨 调用muteAudio4TopThree接口可以开启/禁用音频最大三方模式的音轨,true表示禁用音频最大三方模式的音轨,false表示开启音频最大三方模式的音轨。 示例代码如下: this.client.muteAudio4TopThree(true) 切换音频订阅模式/音频最大三方模式 调用switchAudioMode可以切换音频模式。 当调用switchAudioMode(2)时,表示当前为音频订阅模式;当调用switchAudioMode(3)时,表示当前为音频最大三方模式。 示例代码如下: this.client.switchAudioMode(2)this.client.switchAudioMode(3)
  • API 参考 playAudioClip setVolumeOfAudioClip getAudioClipDuration getAudioClipCurrentPosition setAudioClipPosition pauseAudioClip pauseAllAudioClips resumeAudioClip resumeAllAudioClips stopAudioClip stopAllAudioClips onAudioClipFinished
  • 实现过程 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 播放音乐文件 调用startAudioFile接口可以播放一个音乐文件。同一时刻只能播放一个音乐文件。 [rtcEngine startAudioFile:[[NSBundle mainBundle] pathForResource:@"test.mp3" ofType:@""] publish:1 cycle:1 replace:0]; 设置音乐文件音量 音乐文件播放过程中,可以调用adjustAudioFileVolume设置音乐文件播放音量。 [rtcEngine adjustAudioFileVolume:50]; 获取音乐文件总时长和播放位置 音乐文件打开成功后,sdk会触发一次onAudioMixStateChangedNotify回调,传入state参数为HWRtcAudioFileOpenCompleted,此时可以调用getAudioFileDuration获取音乐文件总时长,可用以刷新界面进度条的总时长。 音乐文件在播放过程中,sdk每秒会触发一次onAudioMixStateChangedNotify回调,其中的state参数为HWRtcAudioFilePositionUpdate,value参数就是当前的音乐文件播放进度,以毫秒为单位,可以在此回调中刷新界面的播放进度条。 播放过程中也可以调用getAudioFileCurrentPosition获取音乐文件当前播放位置,可用于刷新界面的播放进度条。 - (void)onAudioMixStateChangedNotify:(HWRtcAudioFileState)state reason:(HWRtcAudioFileReason)reason value:(NSUInteger)value{ switch (reason) { case HWRtcAudioFileReasonNone: { switch (state) { case HWRtcAudioFileOpenCompleted: { //获取总时长,并刷新进度条 int mixDuration = [self.rtcEngine getAudioFileDuration]; } break; case HWRtcAudioFilePositionUpdate: { //使用value参数值刷新界面的播放进度条 } break; case HWRtcAudioFilePlaying: { //刷新界面 } break; case HWRtcAudioFilePaused: { //刷新界面 } break; case HWRtcAudioFileStopped: { //刷新界面 } break; default: break; } } break; default: { //错误信息提示 } break; }} 设置音乐文件播放位置 播放过程中可以调用setAudioFilePosition设置音乐文件播放位置,可用于通过拖动进度条改变音乐文件的播放位置。 [rtcEngine setAudioFilePosition:50]; 暂停播放音乐文件 调用pauseAudioFile接口可以暂停播放一个音乐文件。 [rtcEngine pauseAudioFile]; 恢复播放暂停的音乐文件 音乐文件暂停播放后,可以调用resumeAudioFile接口恢复播放。 [rtcEngine resumeAudioFile]; 停止播放音乐文件 调用stopAudioFile接口可以停止播放音乐文件。 [rtcEngine stopAudioFile]; 音乐文件播放结束回调 音乐文件播放结束后,sdk会触发onAudioMixStateChangedNotify回调来通知上层应用。 - (void)onAudioMixStateChangedNotify:(HWRtcAudioFileState)state reason:(HWRtcAudioFileReason)reason value:(NSUInteger)value{ //收到音乐文件播放结束的通知,可以刷新界面,比如恢复到播放前初始界面状态 if(state == HWRtcAudioFilePlayCompleted){ }}
  • 功能描述 音视频传输过程中,可以对采集到的音视频数据进行前处理和后处理,获取想要的播放效果。 对于有自行处理音视频数据需求的场景,HWRtcEngine SDK提供原始数据功能,您可以在将数据发送给编码器前进行前处理,对捕捉到的音频信号或视频帧进行修改,也可以在将数据发送给解码器后进行后处理,对接收到的音频信号或视频帧进行修改。 原始视频数据可以进行视频前处理,然后发送给远端。也可以进行视频后处理。
  • 实现原始视频数据(视频前后处理) 注册视频前后处理 获取mHwRtcEngine的MediaEngine对象,调用setVideoFrameObserver方法进行注册。 传入的参数是需要实现了IHRTCVideoFrameObserver的实例对象。 从回调中获取视频帧,并进行处理。 @Overridepublic void onVideoFrameCapture(HRTCVideoFrame hrtcVideoFrame) { // 原始视频回调,从接口回调中取到原始视频数据以作前处理}@Overridepublic void onVideoFrameRender(String s, HRTCVideoFrame hrtcVideoFrame) { // 原始视频数据处理后回调}@Overridepublic boolean requireCaptureVideoFrame() { // 是否需要开启前处理 return false;}@Overridepublic boolean requireRenderVideoFrame() { // 是否需要开启后处理 return false;} 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。
  • 实现过程 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 播放音效文件 调用playAudioClip接口可以播放一个音效文件。可以同时播放多个音效文件,不同音效文件用不同的soundId参数进行区别。 int soundId = 0; //音效文件ID[rtcEngine playAudioClip:soundId filePath: [[NSBundle mainBundle] pathForResource:@"test.mp3" ofType:@""] loop:1 pitch:0.00 pan:0.00 gain:100 publish:1 startPos:0]; 设置音效文件音量 音效文件播放过程中,可以调用setVolumeOfAudioClip设置音效文件播放音量。 音量大小,范围为0-100。 int soundId = 0; //音效文件ID[rtcEngine setVolumeOfAudioClip:soundId volume:50]; 获取音效文件总时长 播放过程中可以调用getAudioClipDuration获取音效文件总时长,可用于刷新界面的播放进度条。 int soundId = 0; //音效文件IDint duration = [rtcEngine getAudioClipDuration: [[NSBundle mainBundle] pathForResource:@"test.mp3" ofType:@""]];//根据当前总时长刷新界面进度条 获取音效文件播放位置 播放过程中可以调用getAudioClipCurrentPosition获取音效文件播放位置,可用于刷新界面的播放进度条。 int soundId = 0; //音效文件IDint pos = [rtcEngine getAudioClipCurrentPosition:soundId];//根据当前播放位置刷新界面进度条 设置音效文件播放位置 播放过程中可以调用setAudioClipPosition设置音效文件播放位置,可用于通过拖动进度条改变音效文件的播放位置。 int soundId = 0; //音效文件ID[rtcEngine setAudioClipPosition:soundId pos:50]; 暂停播放音效文件 调用pauseAudioClip接口可以暂停播放一个音效文件。调用pauseAllAudioClips暂停播放所有正在播放的音效文件。 int soundId = 0; //音效文件ID[rtcEngine pauseAudioClip:soundId]; 恢复播放暂停的音效文件 音频文件暂停播放后,可以调用resumeAudioClip接口可以恢复播放之前暂停的音效文件。或者调用resumeAllAudioClips恢复播放所有暂停的音效文件。 int soundId = 0; //音效文件ID[rtcEngine resumeAudioClip:soundId]; 停止播放音效文件 调用stopAudioClip接口停止播放一个音效文件,或者调用stopAllAudioClips接口停止播放所有音效文件。 int soundId = 0; //音效文件ID[rtcEngine stopAudioClip:soundId]; 音效文件播放结束回调 音效文件播放结束后,sdk会触发onAudioClipFinished回调通知上层应用。 - (void)onAudioClipFinished:(NSInteger)soundId{ //收到音效文件播放结束通知后,可以刷新界面,比如恢复播放前初始界面状态。}
  • 功能描述 音视频传输过程中,可以对采集到的音视频数据进行前处理和后处理,获取想要的播放效果。 对于有自行处理音视频数据需求的场景,HWRtcEngine SDK提供原始数据功能,您可以在将数据发送给编码器前进行前处理,对捕捉到的音频信号或视频帧进行修改,也可以在将数据发送给解码器后进行后处理,对接收到的音频信号或视频帧进行修改。 原始音频数据可以进行音频前处理,然后发送给远端。也可以进行音频后处理。
  • 注意事项 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。 如果使用connection对象加入房间,则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner,则需要调用该房间的ChangeUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间,则需要调用跨房连接的ChangeUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。
  • 实现原始音频数据(音频前后处理) 注册音频前后处理 获取mHwRtcEngine的MediaEngine对象,调用setAudioFrameObserver方法进行注册。 传入的参数是需要实现了IHRTCAudioFrameObserver的实例对象。 从回调中获取音频帧,并进行处理。 @Overridepublic void onAudioFramePlayback(HRTCAudioFrame hrtcAudioFrame) { // 需要播放的音频数据回调,从接口回调中取到音频数据以作后处理}@Overridepublic void onAudioFrameMixed(HRTCAudioFrame hrtcAudioFrame) { // 全部音频混音数据回调,包含上下行所有通道}@Overridepublic void onAudioFrameRecord(HRTCAudioFrame hrtcAudioFrame) { // 音频采集原始数据回调,对音频数据的修改会发送到远端}@Overridepublic boolean requirePlaybackAudioFrame() { // 是否开启音频后处理 return false;}@Overridepublic boolean requireRecordAudioFrame() { // 是否开启音频前处理 return false;}@Overridepublic boolean requireMixedAudioFrame() { // 是否需要开启全部音频混音数据回调 return false;} 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。
  • 实现自定义视频渲染 加入房间前 加入房间前,调用setExternalVideoFrameOutputEnable开启视频自渲染。 public void openExternalVideoOutput() { mHwRtcEngine.setExternalVideoFrameOutputEnable(true, true, new HRTCImageBufferFormat(frameFormat, HRTC_VIDEO_IMAGE_BUFFER_BYTE_ARRAY));} 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 渲染远端视频流 加入房间后,可以通过在onRenderExternalVideoFrame回调中进行视频帧的渲染。 public void onRenderExternalVideoFrame(String roomId, HRTCEnums.HRTCMediaDirection direction, String userId, HRTCVideoFrame videoFrame) { // 渲染视频数据}
  • 实现过程 加入房间前调用主引擎的setExternalAudioCapture 加入房间前调用此接口打开自采集功能。 [_rtcEngine setExternalAudioCapture:YES sampleRate:16000 channels:1] 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 开启音频流发送 调用接口muteLocalAudio开启音频流发送。 [_rtcEngine muteLocalAudio:NO]; 定时推送音频数据帧 加入房间成功回调后,每隔10ms定时调用pushExternalAudioFrame接口推送外部音频数据。 音频输入数据大小:10 * sampleRate * channels * 16 / 8 / 1000 字节,其中的sampleRate和channels是前面调用的setExternalAudioCapture里传入的采样率和声道数参数。 // audioData 获取的音频数据 [_rtcEngine pushExternalAudioFrame: audioData]; 根据帧率循环调用pushExternalAudioFrame方法往SDK推送数据。 音频自渲染 暂不支持音频自渲染功能。
  • 概述 华为云 实时音视频 服务提供的云端录制回放功能适用于需要将音视频通话或互动直播过程进行录制和存储的业务场景。云端录制功能包含两种模式,如表1所示。 表1 云端录制模式 模式 说明 适用场景 单流录制 支持单流录制,可按用户进行录制。 支持自启动录制,开启后对房间内每一个流进行录制。 录制指定的媒体类型,支持仅录制音频、仅录制视频、同时录制音视频。 支持录制MP4、HLS文件,音频编码类型支持AAC。 支持获取回调消息中的播放URL进行回放,回调消息中的downloadurl字段为OBS播放地址,使用该URL播放将会在OBS中产生对应的下载流量或者带宽费用。 支持选择摄像头流或屏幕分享流。 支持指定分辨率大小。 在线课堂、 内容审核 等 合流录制 支持合流录制,可多路视频或多路音频、视频合流录制。 录制指定的媒体类型,支持仅录制音频、仅录制视频、同时录制音视频。 支持录制MP4、HLS文件,音频编码类型支持AAC。 设置音视频属性,支持设置音视频属性,如码率、分辨率、帧率等。 支持获取回调消息中的播放URL进行回放,回调消息中的downloadurl字段为OBS播放地址,使用该URL播放将会在OBS中产生对应的下载流量或者带宽费用。 连麦直播等 父主题: 云端录制与回放
  • 实现过程 加入房间前调用主引擎的setExternalAudioCapture 加入房间前调用此接口打开自采集功能。 [_rtcEngine setExternalAudioCapture:YES sampleRate:16000 channels:1] 加入房间 参考接口调用流程中加入房间的时序图步骤加入房间。 开启音频流发送 调用接口muteLocalAudio开启音频流发送。 [_rtcEngine muteLocalAudio:NO]; 定时推送音频数据帧 加入房间成功回调后,每隔10ms定时调用pushExternalAudioFrame接口推送外部音频数据。 音频输入数据大小:10 * sampleRate * channels * 16 / 8 / 1000 字节,其中的sampleRate和channels是前面调用的setExternalAudioCapture里传入的采样率和声道数参数。 // audioData 获取的音频数据 [_rtcEngine pushExternalAudioFrame: audioData]; 根据帧率循环调用pushExternalAudioFrame方法往SDK推送数据。 音频自渲染 暂不支持音频自渲染功能。
  • 注意事项 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。 如果使用connection对象加入房间,则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner,则需要调用该房间的setUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间,则需要调用跨房连接的setUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。
共100000条