使用微吼云JS SDK,只需简单几步,就能快速发起直播。

跟随本文的步骤,即使你对Javascript语言不熟悉,也完全可以做到。

其中,一至三步为准备工作,第四步为代码接入,下面,就分步来说明。

一.推流准备

  1. 注册微吼开发者账号

  2. 创建应用 获取AppID

  3. 创建直播间 获取roomId

    可以通过 【测试工具】 或 【API】 获得

  4. 获取直播间包含推流权限的access_token

    可以通过 【测试工具】 或 【API】 获得

时序图

注:已知直播间ID的情况下虚线框部分无需请求。

二.引入sdk文件

接下来,我们正式接入sdk: 将下面sdk引入代码,插入页面的head标签里。

<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-live-stream-1.0.0.js"></script>
<script src="https://static.vhallyun.com/jssdk/vhall-jssdk-base-1.0.0.js"></script>

注意:

1.直接用本地网页(file协议,地址栏以file:///开头)是调试不了的,需要运行在服务器上,且推流需https环境,(地址栏以https:// 开头)才能正常调试。

2.上面两个文件都需要引用,而且顺序需要保持与上面一致。

3.建议直接复制上面代码。

三.引入推流依赖flash文件

点此下载推流依赖flash文件,文件名为:Shy.swf。

下载后,在当前推流页同级目录建images文件夹,将下载的 Shy.swf文件放入images中。保证相对目录./images/Shy.swf文件能被推流页面访问到。

四.代码对接

至此,你已完成所有推流准备工作,距离你看到自己的推流画面,只差以下4步:

1.创建推流器对象

在页面加入推流器容器,也就是放一个div,然后给它取个名字,比如: my-publisher 。之后推流回显画面都会在这个容器里渲染,示例:

<div id="my-publisher"></div>

2.注册ready事件

接下来,在页面里写javascript代码,调用sdk提供的接口,注册sdk ready事件,接口调用方法如下:

 /**
  *  注册ready事件
  */
  Vhall.ready(function(){
    //TODO
  })

注意:所有推流相关逻辑需要写在此事件里。

3.初始化SDK配置

接下来,在Vhall.ready事件之后,进行初始化配置:

 /**
  *  注册ready事件
  */
  Vhall.ready(function(){
    //TODO
  });
  
 /**
  * 初始化SDK配置
  */
   Vhall.config({
     appId :'',//应用 ID ,必填
     accountId :'',//第三方用户唯一标识,必填
     token:'',//token必填
   })     

注意:

1.此方法必须写在Vhall.ready事件之后。

2.appId获取方式,参考[推流准备]的“创建应用 获取AppID”

3.token生成方式,参考[推流准备]的“获取直播间 access_token”

4.此处的toekn,即为参考准备的access_token。

4.初始化推流

推流之前,需要初始化推流对象VHPublisher

 /**
  * 初始化推流
  */
  VHPublisher.init({
    roomId:'lss_22b89748',//房间名称
    videoNode:'my-publisher',//推流容器
    //调用推流接口后完成事件,注意,是调用接口事件完成,不是推流结束。
    complete:function(){
      //TODO
    }
  });

注意:

1.此方法必需写在Vhall.ready事件里。

2.roomId获取方式,参考[推流准备]的“创建直播间 获取roomId”

3.videoNode,为推流回显容器的Id,需要开发者自己在需要显示回显的地方,创建一个空div,然后给Id命名,再将id名称写入此参数。参考 “创建推流器对象”

5.推流

最后一步,推流。 此方法既可以不传任何参数来调用(使用默认参数),也可以自定义参数来调用,如下示例:

 /**
  * 简单调用方法
  */
  VHPublisher.startPush();
 /**
  * 自定义参数调用方法
  */
  VHPublisher.startPush({
    camera:'',//摄像头名称,不传值则使用默认摄像头
    mic:'',//麦克风名称,不传值则使用默认麦克风
    width:'',//推流分辨率的宽度,不传值则使用默认分辨率:853,
    height:'',//推流分辨率的高度,不传值则使用默认分辨率:480
    //成功回调,非必填
    success:function(){
      //after success todo 
    },
    //失败回调,非必填
    fail:function(){
      //after failed todo
    }
  });

注意: 此方法必需写在Vhall.ready事件里。

完整例子代码


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>发起直播</title>
  <script src="https://static.vhallyun.com/jssdk/vhall-jssdk-live-stream-1.0.0.js?v=201802021400"></script>
  <script src="https://static.vhallyun.com/jssdk/vhall-jssdk-base-1.0.0.js?v=201802021400"></script>
  <style>
    body{
      background-color: #000;
    }
    .ctrl-box{
      margin:0 auto;
      text-align: center;
      margin:10% 0px 30px 0px;
    }
    .video-box{
      margin:0 auto;
      width: 854px;
      height: 480px;
    }
    #btn-start-push{
      min-width: 80px;
      padding: 5px 10px;
      height: 30px;
      background-color: #1f88e4;
      border: 1px solid #1f88e4;
      border-radius: 2px;
      color: #fff;
      outline: none;
    }
  </style>
</head>
<body>
  <div class="ctrl-box"><button id="btn-start-push">开推</button></div>
  <div class="video-box" >
    <div id="my-publisher" ></div>
  </div>

</body>
<script>

 /**
  * 注册ready事件
  */
  Vhall.ready(function(){

   /**
    * 错误事件监听
    */
      VHPublisher.error(function(e){
        console.error(e.msg);
      });

   /**
    * 初始化推流
    */
      VHPublisher.init({
      roomId:'lss_c063b5c9',//房间名称
      videoNode:'my-publisher',//推流容器
      //调用推流接口后完成事件,注意,是调用接口事件完成,不是推流结束。
      complete:function(){
        //TODO
      }
    });

  });

 /**
  * 初始化配置
  */
   Vhall.config({
       appId :'76043aaf',//应用 ID ,必填
       accountId :'10000126',//第三方用户唯一标识,必填
       token:'',//token必填
   });

  var startBtn = document.getElementById('btn-start-push');
    startBtn.addEventListener('click',startPush);

  /**
   * 开始推流
   */
    function startPush(){
      startBtn.innerHTML = '启动推流中...';
      VHPublisher.startPush({
        success: function(){
          startBtn.removeEventListener('click',startPush);
          startBtn.innerHTML = '停推';
          startBtn.addEventListener('click',stopPush);
        },
        fail: function(e){
          console.error('推流出错',e.msg);
        },
        complete: function(e){
          
        }  
      });
    }
  
  /**
   * 停止推流
   */
    function stopPush(){

      VHPublisher.stopPush({
        complete: function(){
          startBtn.removeEventListener('click',stopPush);
          startBtn.addEventListener('click',startPush);
          startBtn.innerHTML = '开推'
        }
      });
    }

</script>
</html>

其他相关文档

  1. 快速开始
  2. 如何集成观看直播
  3. 发起直播参考手册