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


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 相关文章推荐
表单填写时用回车代替TAB的实现方法
Oct 09 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
倒记时60刷新网页的js代码
Feb 18 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
js仿小米手机上下滑动效果
Feb 05 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
基于JavaScript实现图片剪切效果
Mar 07 Javascript
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
微信小程序实现富文本图片宽度自适应的方法
Jan 20 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
vuex实现购物车功能
Jun 28 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python通过yield实现数组全排列的方法
2015/03/18 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
python print出共轭复数的方法详解
2019/06/25 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
python关于变量名的基础知识点
2020/03/03 Python
python爬取天气数据的实例详解
2020/11/20 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
生产车间主任的个人自我鉴定
2013/10/25 职场文书
优秀体育委员自荐书
2014/01/31 职场文书
成龙洗发水广告词
2014/03/14 职场文书
班组长竞聘书
2014/03/31 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
初中班干部工作总结
2015/08/10 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
MySql分区类型及创建分区的方法
2022/04/13 MySQL