微信小程序如何播放腾讯视频的实现


Posted in Javascript onSeptember 20, 2019

1.背景

因为当时需要做视频播放,后台存放视频文件又不现实。所以,做了一个能解析腾讯视频地址的并播放视频的小程序。

2.介绍

小程序里的解析腾讯视频地址的代码是参考了一个开源项目you-get写的,把里面的腾讯视频下载的python代码写成了JS代码。

3.腾讯视频ID从哪获取

1.一般播放一个腾讯视频的时候播放地址为https://v.qq.com/x/page/w0647n5294g.html。
.html到最后一个/之间的字符串即为腾讯视频id。如https://v.qq.com/x/page/w0647n5294g.html的id为w0647n5294g。

4.获取腾讯视频真实播放地址

分为以下两步

1 获取视频信息

把腾讯视频ID传入以下函数

getVideoInfo: function (vid) {
  var that = this;
  var urlString = 'https://vv.video.qq.com/getinfo?otype=json&appver=3.2.19.333&platform=11&defnpayver=1&vid=' + vid;
  wx.request({
   url: urlString, 
   success: function (res) {
    var dataJson = res.data.replace(/QZOutputJson=/, '') + "qwe";
    var dataJson1 = dataJson.replace(/;qwe/, '');
    var data = JSON.parse(dataJson1);
    var fn_pre = data.vl.vi[0].lnk
    host = data['vl']['vi'][0]['ul']['ui'][0]['url']
    var streams = data['fl']['fi']
    var seg_cnt = data['vl']['vi'][0]['cl']['fc']
    if (parseInt(seg_cnt) == 0) {
     seg_cnt = 1
    }
    var best_quality = streams[streams.length - 1]['name']
    var part_format_id = streams[streams.length - 1]['id']

    for (var i = 1; i < (seg_cnt + 1); i++) {
     var filename = fn_pre + '.p' + (part_format_id % 10000) + '.' + i + '.mp4';
     console.log(filename);
     pageArr.push(i);
     that.requestVideoUrls(part_format_id, vid, filename, 'index' + i);

    }

   }
  })
 },

2 根据视频信息解析视频真正的播放地址

requestVideoUrls: function (part_format_id, vid, fileName, index) {
  var keyApi = "https://vv.video.qq.com/getkey?otype=json&platform=11&format=" + part_format_id + "&vid=" + vid + "&filename=" + fileName + "&appver=3.2.19.333"
  var that = this;
  wx.request({
   url: keyApi,
   success: function (res) {
    var dataJson = res.data.replace(/QZOutputJson=/, '') + "qwe";
    var dataJson1 = dataJson.replace(/;qwe/, '');
    var data = JSON.parse(dataJson1);
    if (data.key != undefined) {
     var vkey = data['key']
     var url = host + fileName + '?vkey=' + vkey;
     part_urls[index] = String(url)
     that.setData({
      videoUrl: part_urls.index1
     });
    }
   }
  })
 },

该函数里面的part_urls.index1,即为腾讯视频的真实地址。把这个地址放到小程序的video组件的src中,即可播放腾讯上的视频。

最后放上demo:weChatVideoPlay

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
删除Javascript Object中间的key
Nov 18 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
Nov 07 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
Sep 20 #Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
Sep 20 #Javascript
微信用户访问小程序的登录过程详解
Sep 20 #Javascript
解决layUI的页面显示不全的问题
Sep 20 #Javascript
小程序如何获取多个formId实现详解
Sep 20 #Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 #Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 #Javascript
You might like
利用PHP创建动态图像
2006/10/09 PHP
如何用php获取文件名后缀
2013/06/09 PHP
php调用shell的方法
2014/11/05 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
python 识别图片中的文字信息方法
2018/05/10 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
高中毕业生自我鉴定范文
2013/09/26 职场文书
人力资源经理自我评价
2014/01/04 职场文书
《雨点》教学反思
2014/02/12 职场文书
服装店营销方案
2014/03/10 职场文书
天网工程实施方案
2014/03/26 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
工作岗位职责范本
2015/02/15 职场文书
大学生入党自荐书
2015/03/05 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
接收函
2019/04/22 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
创业计划书之酒吧
2019/12/02 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
MySQL 计算连续登录天数
2022/05/11 MySQL