1. 程式人生 > >微信小程式引用騰訊視訊

微信小程式引用騰訊視訊

文章轉自 https://www.jiezhe.net/post/38.html

tips:騰訊視訊上傳需要認證,上傳身份證圖片時如果報錯,就換個QQ號,我一個QQ號能上傳,另一個QQ號就不行,應該是有什麼限制,騰訊具體沒說

==================================

2018年6月更新最新訊息:小程式外掛已經支援直接引用騰訊視訊了。

文件:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wxa75efa648b60994b&token=735194258&lang=zh_CN

==================================

最近在折騰微信小程式,需要引用一些騰訊視訊網站上的視訊去播放,很多地方都是教人用F12抓一個mp4地址,這根本不行,因為那個地址是動態的,大概一兩個小時就失效了。

翻了微信小程式的官方社群這方面的問題只有人提問,沒有人有正確的回答(包括官方人員也都不懂),那就只能自己研究了。還好不是很難,折騰了一晚上終於搞定了。

1、首先我們從騰訊視訊網站上找到一個視訊網頁的連線,格式是這樣的

https://v.qq.com/x/page/b0136et5ztz.html

上面我標紅色的是視訊的vid

2、我們把vid放到介面地址上變成 

http://vv.video.qq.com/getinfo?vids=b0136et5ztz&platform=101001&charge=0&otype=json

3、直接訪問返回的是

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":[]}}]}}; 

4、我們把前面的QZOutputJson=跟最後的 ; 過濾掉,得到一個json字串了。解析它變成json物件,然後把標紅的三個部分組合一下,順序是 

url + fn + '?vkey=' + fvkey 

例如上面這串,組合下來就是 

http://113.105.167.156/vhot2.qqvideo.tc.qq.com/AuRJoSSIabzpOb1RsXSviFl-nYwRDSZoFU5OpwBhfrAk/b0136et5ztz.m701.mp4?vkey=EBB1F5C7B5100A3DA80802119E3FF9D0AAE3DA6670594D507B02AD489CF21D2868B0803B76F7434CE51B5C70D75554D68ED24A49EE3DE4791E0BA58444A77756FA7CBC6FB1B3E579F44F87AFB1CB79E8522A48576A4949037A5EDC1C842A9EF7536E090EBD018BB2

這個地址就可以直接放在小程式的video元件裡面播放了。

注意:由於騰訊視訊的地址vkey是定時變化的,所以肯定是不能寫死在程式裡面的。必須走後端照著上面寫的方式抓取介面,過濾掉無用字串,解析json,組合地址,通過介面返回給小程式video元件的src即可正常播放。

當然如果你的後端解析json比較麻煩的(例如古老的asp ^_^),可以把第2步最後的json去掉或者改成xml,直接解析xml也一樣。

賦上我的php程式碼

$tencent_video_info= curl_get('http://vv.video.qq.com/getinfo?vids=l0703b9ds0p&platform=101001&charge=0&otype=json');
$tencent_video_json = substr(explode('QZOutputJson=',$tencent_video_info)[1],0,-1); // 我們把前面的QZOutputJson=跟最後的 ; 過濾掉,得到一個json字串
$tencent_video_array = json_decode($tencent_video_json,true); // 得到json 陣列
$fvkey = $tencent_video_array['vl']['vi'][0]['fvkey'];  // 視訊的fvkey,類似於微信的access_token,會變動
$fn = $tencent_video_array['vl']['vi'][0]['fn'];
$url = $tencent_video_array['vl']['vi'][0]['ul']['ui'][0]['url'];
$video_url = $url.$fn.'?vkey='.$fvkey;