网络编程
位置:首页>> 网络编程>> JavaScript>> 微信小程序嵌入腾讯视频源过程详解

微信小程序嵌入腾讯视频源过程详解

作者:智昕  发布时间:2024-04-18 10:10:25 

标签:微信,小程序,嵌入,腾讯,视频,源

首先我们有一个接口可以获取动态的vkey


https://vv.video.qq.com/getinfo?otype=json&appver=3.2.19.333&platform=11&defnpayver=1&vid=

获取的数据格式是这样的


QZOutputJson={"dltype":1,"exem":0,"fl":{"cnt":2,"fi":[{"id":100701,"name":"msd","lmt":0,"sb":1,"cname":"流畅;(180P)","br":29,"drm":0,"video":1,"fs":35776912,"sl":1},{"id":2,"name":"mp4","lmt":0,"sb":1,"cname":"高清;(480P)","br":34,"drm":0,"video":1,"fs":74129447,"sl":0}]},"hs":0,"ip":"119.137.195.73","ls":0,"preview":1186,"s":"o","sfl":{"cnt":0},"tm":1503504934,"vl":{"cnt":1,"vi":[{"br":29,"ch":0,"cl":{"fc":0,"keyid":"b0136et5ztz.100701"},"ct":21600,"drm":0,"dsb":0,"fmd5":"87d7d2ef15f55a456bcdb359dd580795","fn":"b0136et5ztz.m701.mp4","fs":35776912,"fst":5,"fvkey":"EBB1F5C7B5100A3DA80802119E3FF9D0AAE3DA6670594D507B02AD489CF21D2868B0803B76F7434CE51B5C70D75554D68ED24A49EE3DE4791E0BA58444A77756FA7CBC6FB1B3E579F44F87AFB1CB79E8522A48576A4949037A5EDC1C842A9EF7536E090EBD018BB2","head":0,"hevc":0,"iflag":0,"level":0,"lnk":"b0136et5ztz","logo":1,"mst":8,"pl":null,"share":1,"sp":0,"st":2,"tail":0,"td":"1186.92","ti":"解密潮汕多神信仰","type":3,"ul":{"ui":[{"url":"http://113.105.167.156/vhot2.qqvideo.tc.qq.com/AuRJoSSIabzpOb1RsXSviFl-nYwRDSZoFU5OpwBhfrAk/","vt":200,"dtc":0,"dt":2},{"url":"http://113.105.167.155/vhot2.qqvideo.tc.qq.com/AuRJoSSIabzpOb1RsXSviFl-nYwRDSZoFU5OpwBhfrAk/","vt":200,"dtc":0,"dt":2},{"url":"http://113.105.167.154/vhot2.qqvideo.tc.qq.com/AuRJoSSIabzpOb1RsXSviFl-nYwRDSZoFU5OpwBhfrAk/","vt":200,"dtc":0,"dt":2},{"url":"http://video.dispatch.tc.qq.com/62098754/","vt":0,"dtc":0,"dt":2}]},"vh":272,"vid":"b0136et5ztz","videotype":27,"vr":0,"vst":2,"vw":480,"wh":1.7647059,"wl":{"wi":[]}}]}};

需要的视频播放地址的格式是这样的


url + fn + '?vkey=' + fvkey

我需要的是用户可以在后台发布时候只需要复制视频链接填入即可

vedio 是腾讯播放地址例如:https://v.qq.com/x/page/c0799d0jruj.html  所以稍加改造后,代码如下


function getVideoInfo(vedio) {
if (!vedio) return
var vid = vedio.substring(vedio.lastIndexOf('/') + 1, vedio.lastIndexOf('html') - 1);
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 data = JSON.parse(dataJson);
 var fileName = data['vl']['vi'][0]['fn'];
 var fvkey = data['vl']['vi'][0]['fvkey'];
 var host = data['vl']['vi'][0]['ul']['ui'][2]['url']
 that.setData({
  videoUrl: host + fileName + '?vkey=' + fvkey
 });
 }
})
}

生成的videoUrl即是我需要的最终可以直接插入播放的视频

最后写入wxml


<view class='video'>
<video src='{{videoUrl}}' bindplay='playVideo' id="myVideo"></video>
<view class='tips'>建议WIFI环境下播放</view>
</view>

在小程序中使用发现 需要绑定授权域名https://vv.video.qq.com 我们无法上传验证文件所以无法绑定,因为后面我在小程序接口中使用PHP方法获取视频地址


//腾讯视频获取实际播放放地址
function getVideoInfo($video){
$vid = "";
//正则表达式截取vid
preg_match_all("/(?:\/page\/)(.*)(?:\.html)/i",$video, $vid);
$vid = $vid[1][0];
$urlString = 'https://vv.video.qq.com/getinfo?otype=json&appver=3.2.19.333&platform=11&defnpayver=1&vid='.$vid;
$res = fopen_url($urlString);
//字符串截取json
$json = str_replace("QZOutputJson=","",$res);
$json = str_replace("}}]}};","}}]}}",$json);
//json转换为数组
$json = json_decode($json,true);
$fileName = $json['vl']['vi'][0]['fn'];
$fvkey = $json['vl']['vi'][0]['fvkey'];
$host = $json['vl']['vi'][0]['ul']['ui'][2]['url'];
$url = $host.$fileName.'?vkey='.$fvkey;
return $url;
}
/**
获取远程文件内容
@param $url 文件http地址
*/
function fopen_url($url)
{
if (function_exists('file_get_contents')) {
 $file_content = @file_get_contents($url);
} elseif (ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))){
 $i = 0;
 while (!feof($file) && $i++ < 1000) {
  $file_content .= strtolower(fread($file, 4096));
 }
 fclose($file);
} elseif (function_exists('curl_init')) {
 $curl_handle = curl_init();
 curl_setopt($curl_handle, CURLOPT_URL, $url);
 curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT,2);
 curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($curl_handle, CURLOPT_FAILONERROR,1);
 curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查
 $file_content = curl_exec($curl_handle);
 curl_close($curl_handle);
} else {
 $file_content = '';
}
return $file_content;
}

因此在小程序接口上我们使用getVideoInfo()方法来转换视频地址就行了

来源:https://www.cnblogs.com/lhm166/articles/10115543.html

0
投稿

猜你喜欢

  • 如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER
  • 前言尝试用python语言写脚本是好的开始,证明我们有了自动化的思想,这对优秀的程序开发人员是很重要的,电子计算机本来就是要减少重复工作的。
  • 文章介绍了flask框架中的cookie和session。Session是在服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存
  • 本文实例讲解了python实现两个程序之间通信的方法,具体方法如下:该实例采用socket实现,与socket网络编程不一样的是socket
  • 才发现做了这么多的博客和视频,居然从来没有系统地做过分类网络,做一个科学的分类网络,对身体好。源码下载分类网络的常见形式常见的分类网络都可以
  • IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性。特别是它的代码补
  • redux-saga 是一个管理 Redux 应用异步操作的中间件,功能类似redux-thunk + async/await, 它通过创建
  • 以前写过《 10条影响CSS渲染速度的写法与建议》,今天放些数据出来,供参考;首先说明一点,CSS对网页的最后渲染出来的速度影响非
  • 本文实例为大家分享了python图片插入文字的具体代码,供大家参考,具体内容如下问题如何在图片中插入大量文字并且自动换行效果原始图效果图注明
  • 1. 简介      追踪某些软件运行时所发生事件的方法, 可以在代码中调用日志中某些方法来记录发生的事情一个事件可以用一个可包含可选变量数
  • WebStorm 遇到的问题总结最近自己WebStorm用得多一点了和android studio一样,同样是IDEA的ide(记得自己还是
  • 因工作需要研究了支付宝即时到帐接口,并成功应用到网站上,把过程拿出来分享。即时到帐只是支付宝众多商家服务中的一个,表示客户付款,客户用支付宝
  • 现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的
  • 前言责任链模式(Chain of Responsibility Pattern)是什么?责任链模式是一种行为型模式,它允许多个对象将请求沿着
  • 本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:通常来说,php支持断点续
  • 对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种何时当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有很多种,那么
  • 蓝色混迹多年,偷师学艺不少,这次花了2天时间写了点东西发出来送给需要的吧。先放个图片,我改下代码。  重构完成 IE 6 
  • 前言报错如下:Could not open JDBC Connection for transaction; nested exceptio
  • demo用了点extjs的东西,主要是为了打印json数组出来。 js code(XmlUtils.js): /**/ function X
  • 本文实例为大家分享了Python实现打乒乓小游戏的具体代码,供大家参考,具体内容如下源码奉上:import sysimport cfgimp
手机版 网络编程 asp之家 www.aspxhome.com