哈喽,大家好,我是袁小威,好久没给大家分享好东西了,今天袁小威给大家带来一个实用小功能,那就是获取腾讯视频真实播放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了,有没有很开心呢,好了,此次分享就到这了,下次再见!