I'm Sham
一个在通往码农道路上走走停停的行政文员

小程序制作笔记-PHP自动提取腾讯视频播放地址

因为宿舍管理中心有部分培训宣传视频,想在小程序中展示播放,已经通过wxParse将后台的<video>解析到小程序中,但是,Sham的服务器空间及流量有限,于是考虑使用其他的视频存储平台,最终发现腾讯视频是个很好的选择,但是因为个人的小程序无法使用 <web-view> 组件,于是只能考虑直接使用腾讯视频的播放地址。

但是我们常见的腾讯视频网页地址,比如:https://v.qq.com/x/page/f0903kb3yh5.html,在放入<video>标签之后,是无法播放的,因为他是一个网页,而不是视频文件地址。

网上有网友分享通过腾讯视频自己的解析网址,通过vid视频ID,来自动生成视频的真实播放地址的相关参数,然后通过PHP代码,自动生成地址,于是Sham就结合PHP和小程序,制作了一个PHP后台页面,这样,只要在上个文章中提到的ueditor提交腾讯视频的网址,就能自动识别vid并生成播放真实地址,并替换后,通过json传给小程序。

首页,我们要提取视频ID即vid:

我们要保证腾讯视频的播放网址的格式是https://v.qq.com/**/f0903kb3yh5.html,包含v.qq.com,然后以***.html结尾,这个f0903kb3yh5 就是前面提到的vid视频Id了,我们需要把这个通过preg_match_all,把它提取出来:

preg_match_all("/<video(.*?)src=('|\")(.*?)v.qq.com(.*?)(\/)([0-9a-zA-Z]+).html(.*?)>(.*?)<\/video>/", $content, $match); // $content为包含腾讯视频网址的内容,匹配所有符合条件的数据
  $vids = $match[6];//读取第6个值即.html与/之间的,视频ID数组
  $vodurls=$match[0]; //取匹配的所有,这个是最后用来替换掉用的

因为一条内容中可能有多个视频网址,所以上面用的preg_match_all ,提取出来的vids是一个数组

然后,通过腾讯自己的网址,利用vid将真实播放视频地址各参数读取出来,并合并成网址。

因为vids是数组,所以需要通过foreach来获取,获取到的video_urls 也是一个数组,说到这个,sham因为太小白,整整花了1晚上才研究明白,苦啊!

foreach ($vids  as $vid) {	//循环将视频ID数组转换成腾讯视频文件播放真实地址
  $vjson="http://vv.video.qq.com/getinfo?vids=".$vid."&platform=101001&defnpayver=1&charge=0&otype=xml&defn=shd";   //获取腾讯视频地址xml形式
  $html = file_get_contents($vjson);  
  $info = simplexml_load_string($html);
  $arr=json_encode($info);//取出的对象转成json 再转成数组
  $arr= json_decode($arr,true);
  $filename = $arr['vl']['vi']['fn'];
  $key = $arr['vl']['vi']['fvkey'];
  $url = $arr['vl']['vi']['ul']['ui'][1]['url'];
  $video_url = '<video src="'.$url . $filename . '?vkey=' . $key.'" controls="controls" preload="none"></video>';    //腾讯视频播放真实地址
  $video_urls[] = $video_url;
}

最后一步,就是将$content中对应的腾讯视频网址,一 一对应替换成真实播放地址,用到的是str_replace

$contents = str_replace($vodurls, $video_urls, $content); //批量替换

这样,我们只需要将$contents写入json并传给小程序,就能在小程序上看到视频了。

后话:Sham发现腾讯视频里电影等视频采用这个方法,只能播放3分钟,应该是需要其他办法才可以使用的,不过sham用不到,也就不去研究了。另外如果有的腾讯小视频的地址不是

赞(1) 赏杯咖啡!
未经允许不得转载:Sham@双目瞿 » 小程序制作笔记-PHP自动提取腾讯视频播放地址

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

如果你觉得文章好,请赏1杯速溶咖啡给Sham吧!

微信扫一扫打赏