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


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 实现TreeView CheckBox全选效果
Jan 11 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
Mar 04 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 Javascript
javascript对JSON数据排序的3个例子
Apr 12 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
浅谈angular.js跨域post解决方案
Aug 30 Javascript
关于微信小程序登录的那些事
Jan 08 Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
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 !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
详解Python传入参数的几种方法
2019/05/16 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
python对一个数向上取整的实例方法
2020/06/18 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
2014年五四青年节演讲稿范文
2014/04/22 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
代理人委托书
2014/08/01 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
2014年医生工作总结
2014/11/21 职场文书
法律意见书范文
2015/05/20 职场文书
2022微信温控新功能上线
2022/05/09 数码科技
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android