通过阅读本文,您可以了解Web RTS SDK的接口详情。

目录

API 描述
createClient 实例化对象。
isSupport 检测浏览器是否可用。
subscribe 开始拉RTS流。
unsubscribe 停止RTS播放。
muted 静音。
createStream 获取本地流。
publish 开始推流。
unpublish 停止推流。
on 回调监听。

详情

  • createClient:实例化对象。
    var aliRts = AliRTS.createClient();
  • isSupport:检测浏览器是否可用。
    /**
     * isSupport检测是否可用
     * @param {Object} supportInfo 检测信息
     * @param {Boolean} supportInfo.isReceiveVideo 是否拉视频流
     * @return {Promise}
     */
    aliRts.isSupport(supportInfo).then(re=> {
      // 可用
    }).catch(err=> {
      // 不可用
      console.log(`not support errorCode: ${err.errorCode}`);
      console.log(`not support message: ${err.message}`);
    })
  • subscribe:开始拉RTS流。
    /**
     * rts开始拉流接口
     * @param {String} pullStreamUrl 拉流地址,在地址后添加@subaudio=no或者@subvideo=no来表示不订阅音频流或视频流
     * @return {Promise}
     */
    aliRts.subscribe(pullStreamUrl).then((remoteStream) => {
      // mediaElement是媒体标签audio或video
      remoteStream.play(mediaElement);
    }).catch((err) => {
      // 订阅失败
    })
    注意
    超低延时直播(RTS)对音视频解码存在以下限制:
    • 视频不支持B帧(会出现画面跳跃)。
    • 音频不支持AAC编码(会出现噪音)。
    如有需求可进行RTS转码解除限制,具体操作请参见RTS转码
  • unsubscribe:停止RTS播放。
    aliRts.unsubscribe();
  • muted:静音。
    remoteStream.muted = true;
  • createStream:获取本地流。
    /**
     * 获取本地流localStream
     */
    AliRTS.createStream({
      audio: true,
      video: true,
      screen: false,
    }).then((localStream) => {
      // 预览推流内容,mediaElement是媒体标签audio或video
      localStream.play(mediaElement);
    }).catch((err) => {
      // 创建本地流失败
    })
  • publish:开始推流。
    /**
     * 开始推流
     */
    aliRts.publish(pushUrl, localStream)).then(() => {
      // 推流成功
    }).catch((err) => {
      // 推流失败
    })
  • unpublish:停止推流。
    aliRts.unpublish();
  • on:回调监听。
    /*
     * 在onError中获取到错误码10201时,此时网页的音频是静音的,
     * 需要用户在网页上手动触发事件(必须有用户交互,不能直接通过代码控制)
     * 调用remoteStream.muted = false取消静音
     */
    aliRts.on("onError", (err)=> {
      console.log(`errorCode: ${err.errorCode}`);
      console.log(`message: ${err.message}`);
    })
    
    const PLAY_EVENT = {
      CANPLAY: "canplay",
      WAITING: "waiting",
      PLAYING: "playing"
    }
    
    aliRts.on('onPlayEvent', (play)=>{
      if(play.event === PLAY_EVENT.CANPLAY){
        //拉流可以播放
      }else if(play.event === PLAY_EVENT.WAITING){
        //拉流卡顿等待缓冲中 (仅Chrome)
      }else if(play.event === PLAY_EVENT.PLAYING){
        //拉流卡顿结束恢复播放 (仅Chrome)
      }
    })