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


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 相关文章推荐
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
Javascript学习笔记-详解in运算符
Sep 13 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
JQuery+Ajax无刷新分页的实例代码
Feb 08 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
Mar 01 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
详解vue中移动端自适应方案
May 05 Javascript
JS开发常用工具函数(小结)
Jul 04 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 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&amp;&amp;mysql)三
2006/10/09 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
PDO::getAttribute讲解
2019/01/28 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
element中el-container容器与div布局区分详解
2020/05/13 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
浅析python实现动态规划背包问题
2020/12/31 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
会计系毕业个人自荐信格式
2013/09/23 职场文书
女大学生自我鉴定
2013/12/09 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
春节联欢会策划方案
2014/05/16 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技