微信小程序嵌入腾讯视频源过程详解
首先我们有一个接口可以获取动态的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 所以稍加改造后,代码如下
functiongetVideoInfo(vedio){
if(!vedio)return
varvid=vedio.substring(vedio.lastIndexOf('/')+1,vedio.lastIndexOf('html')-1);
varthat=this;
varurlString='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){
vardataJson=res.data.replace(/QZOutputJson=/,'')+"qwe";
vardata=JSON.parse(dataJson);
varfileName=data['vl']['vi'][0]['fn'];
varfvkey=data['vl']['vi'][0]['fvkey'];
varhost=data['vl']['vi'][0]['ul']['ui'][2]['url']
that.setData({
videoUrl:host+fileName+'?vkey='+fvkey
});
}
})
}
生成的videoUrl即是我需要的最终可以直接插入播放的视频
最后写入wxml
建议WIFI环境下播放
在小程序中使用发现需要绑定授权域名https://vv.video.qq.com我们无法上传验证文件所以无法绑定,因为后面我在小程序接口中使用PHP方法获取视频地址
//腾讯视频获取实际播放放地址
functiongetVideoInfo($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地址
*/
functionfopen_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,'TrackbackSpamCheck');//引用垃圾邮件检查
$file_content=curl_exec($curl_handle);
curl_close($curl_handle);
}else{
$file_content='';
}
return$file_content;
}
因此在小程序接口上我们使用getVideoInfo()方法来转换视频地址就行了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。