小程序处理腾讯视频

1.思路
a. 请求视频详情接口
b. 用服务器返回的url生成vid
c. 获取唯一标识,本项目中采用用户uuid
d. 用vid和uuid请求处理视频接口,获得解析之后的视频地址,这里需要判断视频解析是否成功,callback.s == 'o' 即为解析成功,callback.s == 'f' 即为解析失败
e. 将解析之后的地址绑定到页面结构上


2. 代码
Page({
  data: {
    videoId: '',  //该视频的id
    listData: [], //视频详情数据
    isQiNiu: null, //是否需要调用七牛视频
  },

  onLoad: function (options) {
    this.getVideoDetail(options.videoId, () => {
      this.dealVideo((isQiNiu, realUrl) => {
        if (isQiNiu === false) {
          this.data.listData.path = realUrl
          this.setData({
            listData: this.data.listData
          })
        } else {
          return false
        }
      })

      this.getQiniuVideoUrl()
    })
  },

  // 获取视频详情信息
  getVideoDetail (videoId, callback) {
    wx.request({
      url: yourUrl,
      method: 'GET',
      header: {


      },
      data: {
        paras: your.paras
      },
      complete: res => {
        if(res.statusCode == 200) {
          this.data.listData = res.data.data
          this.setData({
            listData: this.data.listData
          })
          callback()
        } 
      }
    })
  },

  //视频播放相关方法
  getVid() {
    var url = this.data.listData.path
    if (url.indexOf('%2F') === -1) {
      var splitdata = url.split('/');
    } else {
      var splitdata = url.split('%2F');
    }
    var length = splitdata.length;
    var vid = splitdata[length - 1].split('.')[0];
    return vid;
  },

  getUuid() {
  // 用户信息自行获取
    var uuid = JSON.parse(wx.getStorageSync('userinfo')).id
    return uuid
  },

  dealVideo(dealVideoCallback) {
    var vid = this.getVid()
    var uuid = this.getUuid()
    wx.request({
      url: "https://av.video.qq.com/getinfo?callback=JsonpCallBack&&charge=0&defaultfmt=auto&otype=json&guid=" + uuid + "&platform=11001&sdtfrom=v1103&defnpayver=0&appVer=3.3.321&host=v.qq.com&ehost=https%3A%2F%2Fm.v.qq.com%2F&_rnd=1514372402&spwm=4&vid=" + vid,
      header: {
        
      },
      success: (res) => {
        var htmlData = res.data.slice(14, -1)
        var callbackObj = JSON.parse(htmlData);
        if(callbackObj.s === 'o') {
          this.data.isQiNiu = false
          var viData = callbackObj['vl']['vi'][0]
          var fn = viData['fn'];
          var vkey = viData['fvkey'];
          var title = viData['ti'];
          var preUrl = viData['ul']['ui'][0]['url'];
          var realUrl = preUrl + fn + "?vkey=" + vkey;
        } else {
          this.sdata.isQiNiu = true
        }
        dealVideoCallback(this.data.isQiNiu, realUrl)
      },
    })
  },

  // 获取七牛视频资源
  getQiniuVideoUrl() {
    console.log('this is qiniu api')
  },
})

猜你喜欢

转载自blog.csdn.net/tengxi_5290/article/details/79885186