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


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 相关文章推荐
js宝典学习笔记(上)
Jan 10 Javascript
javascript GUID生成器实现代码
Oct 31 Javascript
JQuery 选择器 xpath 语法应用
May 13 Javascript
javascript去除字符串左右两端的空格
Feb 05 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
JS传参及动态修改页面布局
Apr 13 Javascript
使用vue + less 实现简单换肤功能的示例
Feb 21 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
js+cavans实现图片滑块验证
Sep 29 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的字符串用法小结
2010/06/08 PHP
PHP中PDO的错误处理
2011/09/04 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
js实现GIF图片的分解和合成
2019/10/24 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Python的print用法示例
2014/02/11 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Python类成员继承重写的实现
2020/09/16 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
刚毕业大学生自荐信范文
2014/02/20 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
学校党支部承诺书
2015/04/30 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python