微吼开放平台
平台概述
开发者文档
开发者文档
  • 嵌入指南
  • SDK文档
  • 服务端API
产品功能
产品功能
  • 新手入门
  • 功能介绍
  • 常见问题
微吼官网
平台概述
开发者文档
开发者文档
  • 嵌入指南
  • SDK文档
  • 服务端API
产品功能
产品功能
  • 新手入门
  • 功能介绍
  • 常见问题
微吼官网
  1. 发起视频直播
  • 示例
  • JS SDK
    • web 观播 sdk
      • 简介
      • 接入必读
      • 对接示例
      • 活动详情
      • 观看直播
      • 文档白板
      • 暖场视频
      • 回放章节
      • 互动连麦
      • 资料下载
      • 观看限制
      • 观看协议
      • 全局事件
      • 互动工具
        • 互动-聊天
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-公告
        • 互动-商品
        • 互动-问答
        • 互动-点赞
        • 互动-优惠券
        • 互动-推屏卡片
        • 互动-快问快答
      • 扩展能力
        • 屏蔽观众端画面与音频
          • 屏蔽画面与音频
      • 其他资料
        • 更新记录
        • 全局错误码
    • web 点播上传 sdk
      • 点播SDK
      • 更新记录
  • iOS SDK
    • 简介
    • 快速接入
    • SDK登录
    • 暖场视频
    • 视频轮询
    • 直播彩排
    • 高级美颜
    • 云导播
    • 观看协议
    • 文档白板演示
    • 聊天功能
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 观众互动
      • 推流摄像头
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-章节打点
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播间拓展能力
      • 直播间特色功能配置项
      • 文件下载
      • 修改角色昵称
      • 观看权限校验
      • 投屏
      • 虚拟人数
    • 观看回放
      • 观看回放
    • 防录屏
      • 跑马灯
    • 字段说明
      • 互动活动详情字段
      • 错误码说明
      • 常量定义
      • 活动详情字段说明
    • 版本更新说明
      • 版本更新信息
      • 6.5.0
      • v6.4.0
      • v6.3.0
      • v6.2.1
      • v5.0.x 到 v6.0.0
      • v3.2.0 到 v4.0.1
      • v3.0.1 到 v3.2.0 升级说明
      • V2.9.0到v3.0.1升级说明
      • v2.7.0 到 v2.8.0、v2.9.0 升级说明
      • v2.3.0 到 v2.4.0 升级说明
  • Adroid SDK
    • 整体介绍
    • 快速接入
    • 信息采集说明
    • SDK登录
    • 暖场视频
    • 视频轮巡功能
    • 直播彩排
    • 高级美颜
    • 云导播功能
    • 观看协议
    • 文档白板
    • 聊天功能
    • 房间消息
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 观看回放
      • 观看回放/点播
    • 互动直播
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
      • 观众观看互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-公告
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
      • 互动-商品
    • 直播拓展功能
      • 修改角色名称
      • 文件下载
      • 投屏演示
      • 虚拟人数
      • 观看权限校验
      • 直播间特色功能配置项
    • 防录屏
      • 直播水印
      • 跑马灯
    • 字段说明
      • 房间消息字段说明
      • 聊天消息字段说明
      • 活动详情字段说明
    • 版本更新说明
      • v6.3.0
      • v6.2.1
      • v6.2.0
      • v5.0.0
      • v6.4.0
      • v6.2.3
      • v4.0.0
      • v6.1.0
      • v6.0.0
      • v3.3.0
      • v4.1.0
    • 更新记录
      • 更新记录
  • Harmony SDK
    • 整体介绍
    • 快速接入
    • SDK初始化
    • 登录&登出
    • 活动基础信息
    • 观看协议
    • 观看权限校验&预约
    • 开屏海报
    • 暖场视频
    • 观看直播
    • 观看回放/点播
    • 聊天
    • 房间消息
    • 在线人数&热度
    • 文档/白板
    • 版本更新
    • 私聊
    • 播放器错误码
    • 互动工具
      • 互动-问答
      • 互动-问卷
      • 互动-公告
      • 互动-抽奖
      • 互动-签到
      • 互动-计时器
      • 互动-礼物
      • 互动-互动有礼
      • 互动-快问快答
      • 互动-口令红包
      • 互动-推屏卡片
      • 互动-商品
      • 互动-优惠卷
      • 互动-观看有礼
      • 互动-点赞
    • 防录屏
      • 播放器水印&跑马灯
    • 菜单
      • 自定义菜单
      • 文件下载
      • 概要总结
      • 回放列表
      • 邀请卡
    • 互动直播
      • 互动直播
      • 主播发起互动直播
      • 嘉宾加入互动直播
      • 观众观看互动直播
    • 发起视频直播
      • 发起视频直播
  • 微信小程序 SDK
    • 简介
    • 快速接入
    • 签名鉴权说明
  • 相关协议
    • 微吼直播 SDK 隐私政策
    • 微吼直播 SDK 开发者使用规范
  1. 发起视频直播

发起视频直播

功能说明#

SDK具有视频直播发起的能力,需要完成直播间的初始化、开始推流后方可开启一场视频直播。

关键步骤#

1.
VHPusherSDK.getInstance() 推流单例
2.
VHPusherSDK.getInstance().init 初始化及回调配置
3.
VHPusherSDK.getInstance().createLocalStream 开启采集
4.
VHPusherSDK.getInstance().updateLocalView 更新本地渲染控件
5.
VHPusherSDK.getInstance().setVideoEncode 设置编码属性
6.
VHSaaSDK.getInstance().liveStart 开始直播 -- (live_type – 直播类型:0-正式直播(默认))
7.
VHPusherSDK.getInstance().publish() 开始推流
8.
VHPusherSDK.getInstance().unPublish() 停止推流
9.
VHSaaSDK.getInstance().liveEnd 结束直播
10.
VHPusherSDK.getInstance().destroy() 销毁

关键方法#

方法方法描述
init初始化
createLocalStream开始视频采集
stopLocalPreview停止本地采集
setVideoEncode设置音视频编码清晰度
updateLocalView更新本地渲染控件
muteLocalAudio控制麦克风静音
switchCamera切换前后摄像头
publish开始推流
unPublish停止推流
setMirrorType设置镜像
setVideoFillMode设置画面填充模式
setVideoMuteImage图片推流
enableCustomDataProcess自定义数据处理
destroydestroy

VhallPusherCallback#

方法方法描述
onPushConnectSuccess推流成功
onPushDisconnect推流断开
onReConnecting重推流
onError错误事件回调
onWarning警告事件回调
onMicrophoneVolumeUpdate麦克风音量
onPushStreamBitrate推流码率
onCaptureFrame自定义采集回调数据

初始化#

方法APi
public init(context: Context,version:number,url: string | null, key: string | null,webinar_info:VHWebinarData,callback:VhallPusherCallback,initCb:VHPusherInitCallBack)
** 方法入参 **
参数名称是否必须备注
context是应用context
version是1 免费 2 付费版本(请联系客服进行咨询)
url是version 为1时传null , 为2时需要传递的 url
key是version 为1时传null , 为2时需要传递的 key
webinarInfo是活动信息

开始视频采集#

方法APi
显示视频预览
  public createLocalStream(frontCamera: boolean): void
方法入参
参数名称是否必须备注
frontCamera是true:前置摄像头 false:后置摄像头

停止本地采集#

方法APi
关闭视频预览
  public stopLocalPreview(): void 

设置音视频编码清晰度#

方法APi
  public setVideoEncode(profile:VhallPusherResolution): void 
方法入参
参数名称是否必须备注
profile是VhallPusherResolution 清晰度枚举值
方法示例
VHPusherSDK.getInstance().setVideoEncode(VhallPusherResolution.VhallPusherResolution1280x720);

更新本地渲染控件#

方法APi
  public updateLocalView(view: string, controller: object): void 
方法入参
参数名称是否必须备注
view是对应VhallXComponentView设置的id
controller是对应VhallXComponentView 回调返回的对象
方法示例
    VHPusherSDK.getInstance().updateLocalView(this.mainVideoViewID, obj);

控制麦克风静音#

方法APi
  public muteLocalAudio(mute: boolean): void
方法入参
参数名称是否必须备注
mute是rue:静音,false:开启

切换前后摄像头#

方法APi
  public switchCamera(frontCamera: boolean): void 
方法入参
参数名称是否必须备注
frontCamera是rue:前置,false:后置

开始推流#

方法APi
public publish(): void

停止推流#

方法APi
 public unPublish(): void

设置镜像#

方法APi
 public setMirrorType(mirror: boolean): void
方法入参
参数名称是否必须示例备注
mirror是YESYES:镜像 NO:不镜像

设置画面填充模式#

方法APi
  public setVideoFillMode(mode: VhallPushFillMode): void 
方法入参
参数名称是否必须备注
mode是VhallPushFillMode
方法示例
 VHPusherSDK.getInstance().setVideoFillMode(VhallRTCVideoFillMode.VHRTCVideoFillMode_Fit);

图片推流#

方法APi
 public setVideoMuteImage(pixelMap: image.PixelMap | null): void
方法返回参数
参数名称是否必须备注
pixelMap是推流成功后,可以将摄像头画面替换为图片。当需要关闭摄像头时,可以设置一个pixmap图片进行推流。当需要切换回摄像头时,将pixmap设置为null
方法示例
 if (this.isVideoMute) {
      let context = this.getUIContext();
      if(this.screenSnap == null) {
          this.screenSnap = context.getComponentSnapshot().getSync("localVideo")
        }
        VHPusherSDK.getInstance().setVideoMuteImage(this.screenSnap);
      } else {
        VHPusherSDK.getInstance().setVideoMuteImage(null);
     }
  }

直播状态详情#

参数名称备注
OK_PUBLISH_CONNECT = 0推流成功
ERROR_PUBLISH_CONNECT = 1推流失败 (需重新推流)
RECONNECTING = 22底层重连推流中
ERROR_MUXER_EMPTY = 25推流失败 读取不到推流数据(需重新推流)
CAN_NOT_CHANGE_PROFILE_WHEN_PUSHING_STREAM = 105推流中禁止修改清晰度
PUSH_PROFILE_ERROR不支持的清晰度

回调方法示例#

方法APi
VHPusherSDK.getInstance().init(
            context,
            1,
            null,
            null,
            this.webinar_info,
            {
              onPushConnectSuccess: (): void => {
                ToastUtil.showToast("已连接");
              },
              onPushDisconnect: (): void => {
                ToastUtil.showToast("已断开");
                setTimeout(()=>{
                  VHPusherSDK.getInstance().unPublish();
                  VHPusherSDK.getInstance().publish();
                },2000)
              },
              onReConnecting: (): void => {
                ToastUtil.showToast("正在重连");
              },
              onError: (errCode: number, errMsg: string): void => {
                ToastUtil.showToast(errMsg);
                if(errCode == VhallMediaPusherCode.ERROR_PUBLISH_CONNECT || errCode == VhallMediaPusherCode.ERROR_MUXER_EMPTY){
                  setTimeout(()=>{
                    VHPusherSDK.getInstance().unPublish();
                    VHPusherSDK.getInstance().publish();
                  },2000)
                }
              },
              onWarning: (warningCode: number, warningMsg: string): void => {
                ToastUtil.showToast(warningMsg);
              },
              onMicrophoneVolumeUpdate: (volume: number): void => {
              },
              onPushStreamBitrate: (bitrate: number): void => {
                console.info("bitrate: " + bitrate);
                this.bitRate = Number(bitrate).toString();
              },
              onCaptureFrame: (src: VhallMediaCaptureFrame, dst: VhallMediaCaptureFrame): void => {
                let srcFrame = new VhallBeautyFrame(src.data, src.width, src.height, src.timestamp);
                let dstFrame = new VhallBeautyFrame(dst.data, dst.width, dst.height, dst.timestamp);
                VHBeautySDK.getInstance().renderWithInput(srcFrame, dstFrame);
                dst.data = dstFrame.data;
              }
            },
            {
              onSuccess: (): void => {
                let selfItem = new VHPusherUserInfo(this.userId);
                selfItem.isMain = true;
                selfItem.nickName = this.webinar_info?.join_info?.nickname!;
                const isUserExists = this.streamList.some(item => item.userId === this.userId);
                if (!isUserExists) {
                  this.streamList.push(selfItem);
                }
                this.isHost = true;
                this.init();
                this.getUserListInfo();
              },
              onFailure: (errorCode: number, errorMsg: string): void => {
              }
            }
          )
        }
修改于 2026-03-16 07:34:13
上一页
观众观看互动直播
下一页
简介
Built with