哈嘍,大家好,我是袁小威,好久沒給大家分享好東西了,今天袁小威給大家帶來一個實用小功能,那就是獲取騰訊視頻真實播放url,當然這個小功能還是有些許侷限性,經本人實測,目前支持騰訊視頻娛樂、音樂、新聞、搞笑、遊戲、原創、時尚、生活、汽車、科技、財經、房產、育兒、旅遊等分類欄目,對於電影、電視劇、動漫、韓劇、微電影、體育、NBA、直播、精品課等還無法獲取,好了,下面進入正題吧。
首先,我們需要獲取到我們所要獲取的視頻的vid,那麼這個vid在哪呢,比如播放地址:https://v.qq.com/x/cover/x6y6l2e5a2ich2q/s0030t0b74q.html,那這個視頻的vid就是“/”與“.html”之間的那串字符串,沒錯就是“s0030t0b74q”了,當然也可以用代碼直接根據url分理出這個字符串。
這裏很簡單,php有自帶的方法basename可以直接處理,代碼如下:
$url = 'https://v.qq.com/x/cover/x6y6l2e5a2ich2q/s0030t0b74q.html';
$vid = basename($url,'.html');
這樣,我們就得到我們所要的vid了。得到vid後,就可以通過如下代碼愉快的獲取到真實的播放url了,話不多說,直接上代碼:
function getVideosInfo($vid){
$urlString = 'https://vv.video.qq.com/getinfo?otype=json&appver=3.2.19.333&platform=11&defnpayver=1&vid='.$vid;
$res = httpRequest($urlString,'GET');
$jsonarr = json_decode(substr($res,13,-1),true);
$fn_pre = $jsonarr['vl']['vi'][0]['lnk'];
$host = $jsonarr['vl']['vi'][0]['ul']['ui'][0]['url'];
$streams =$jsonarr['fl']['fi'];
$seg_cnt = $jsonarr['vl']['vi'][0]['cl']['fc'];
if ($seg_cnt == 0){
$seg_cnt = 1;
}
//此處是畫質 0-標清 1-高清 2-超清
$best_quality = $streams[count($streams)-1]['name'];
$part_format_id = $streams[count($streams)-1]['id'];
for ($i=1;$i<($seg_cnt+1);$i++){
$filename = $fn_pre .'.p' . $part_format_id%10000 . '.' . $i . '.mp4';
}
$keyApi = "https://vv.video.qq.com/getkey?otype=json&platform=11&format=" . $part_format_id . "&vid=" . $vid . "&filename=" .$filename . "&appver=3.2.19.333";
$result = httpRequest($keyApi,'GET');
$jsonarr1 = json_decode(substr($result,13,-1),true);
if ($jsonarr1['key']){
$url = $host . $filename .'?vkey=' .$jsonarr1['key'];
}
return $url;
}
至此,我們的功能就完成了,在這裏,我們一般把獲取真實url的過程封裝成一個方法,然後在要用的地方直接傳入vid(或者視頻地址也可以,把分離獲取vid部分的代碼也寫進封裝的方法裏就好了),就可以愉快的獲取到想要的真實播放url了,有沒有很開心呢,好了,此次分享就到這了,下次再見!