首先,我们须要获取到我们所要获取的视频的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了,有没有很愉快呢,好了,这次分享就到这了,下次再见!