杰者的备忘录

当前位置:   网站首页 >> 微信

微信小程序video组件调用腾讯视频的解决方案

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


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也一样。

网友评论38

  1. 来宾2017-11-10 17:41:34 回复

    牛逼

  1. 来宾2017-11-28 15:35:36 回复

    现在之歌方法是不是不行了,提示403错误!!!

    1. admin2017-11-28 23:42:01 回复

      上面已经说得很清楚了,“注意:由于腾讯视频的地址vkey是定时变化的,所以肯定是不能写死在程序里面的。必须走后端照着上面写的方式抓取接口,过滤掉无用字符串,解析json,组合地址,通过接口返回给小程序video组件的src即可正常播放。”现在距离我发这个博文都过去好几个月了,我演示最终拼接完成的例子的vkey早过期了,必须通过1、2、3步拿到新的vkey去拼接得到最新的地址。只要第2步的地址能够正常返回第3步提到的json,这个方案就一直有效。

      1. 来宾2018-01-11 08:56:14 回复

        怎么抓取vkey接口?

        1. 来宾2018-01-11 14:52:16 回复

          找你的后端程序员看这篇博文去实现

  1. admin2017-11-28 23:42:01 回复

    上面已经说得很清楚了,“注意:由于腾讯视频的地址vkey是定时变化的,所以肯定是不能写死在程序里面的。必须走后端照着上面写的方式抓取接口,过滤掉无用字符串,解析json,组合地址,通过接口返回给小程序video组件的src即可正常播放。”现在距离我发这个博文都过去好几个月了,我演示最终拼接完成的例子的vkey早过期了,必须通过1、2、3步拿到新的vkey去拼接得到最新的地址。只要第2步的地址能够正常返回第3步提到的json,这个方案就一直有效。

    1. 来宾2018-01-11 08:56:14 回复

      怎么抓取vkey接口?

      1. 来宾2018-01-11 14:52:16 回复

        找你的后端程序员看这篇博文去实现

  1. 来宾2018-01-05 13:16:56 回复

    按照博主的步骤,可以获取到正常的播放地址

  1. 来宾2018-01-05 14:57:47 回复

    还有一个问题,就是ul->ui 数组里,不一定每次都能拿到想要的url。

    1. 来宾2018-01-05 23:10:03 回复

      你应该检查一下你的程序是否有问题,直接拿第二步那个实例地址在浏览器刷新了几百次,每次都会返回url

  1. 来宾2018-01-05 17:38:43 回复

    盗链你确定官方不会追究吗?

    1. 来宾2018-01-05 23:15:12 回复

      首先,这个接口是腾讯提供的,其次,你的小程序最终的发布上线是经过腾讯人工审核的,审核通过代表腾讯是认可你的小程序一切功能是符合规定的。再者你的公司是得大到什么程度值得腾讯去追究你?

  1. 来宾2018-01-05 23:10:03 回复

    你应该检查一下你的程序是否有问题,直接拿第二步那个实例地址在浏览器刷新了几百次,每次都会返回url

  1. 来宾2018-01-05 23:15:12 回复

    首先,这个接口是腾讯提供的,其次,你的小程序最终的发布上线是经过腾讯人工审核的,审核通过代表腾讯是认可你的小程序一切功能是符合规定的。再者你的公司是得大到什么程度值得腾讯去追究你?

  1. 来宾2018-01-11 08:56:14 回复

    怎么抓取vkey接口?

    1. 来宾2018-01-11 14:52:16 回复

      找你的后端程序员看这篇博文去实现

  1. 来宾2018-01-11 14:52:16 回复

    找你的后端程序员看这篇博文去实现

  1. 来宾2018-01-11 17:54:16 回复

    博主厉害,就是不知道能用多久

  1. 来宾2018-01-16 15:17:38 回复

    厉害厉害

  1. 来宾2018-02-01 11:29:26 回复

    厉害厉害.牛逼牛逼

  1. 来宾2018-02-03 10:02:11 回复

    牛,谢谢了,非常赞

  1. 来宾2018-02-03 10:04:59 回复

    转载一下,谢谢

  1. 来宾2018-02-05 11:32:59 回复

    大家知不知道每一个链接的有效时期大概多久?肯定得比视频时间长,是不是有24小时?

    1. 来宾2018-02-12 02:56:59 回复

      没有那么长的。一般一两个小时,研究这个有效期没有意义

  1. 来宾2018-02-12 02:56:59 回复

    没有那么长的。一般一两个小时,研究这个有效期没有意义

  1. 来宾2018-03-02 16:25:17 回复

    这个地址每次只能播放一分多种就停下来不动了。

  1. 来宾2018-03-05 19:17:03 回复

    大神,这个方法得到的地址,小程序是可以调用,但是是标清的,如果要用高清,超高清效果,需要加什么参数呢?

    1. admin2018-03-09 02:31:51 回复

      以上面这个3的json为例子,你看到"ui"后面有四组URL了没?有"vt":106跟"vt":116两种,就是代表不同清晰度的,你可以自己组合一下。

      1. 来宾2018-03-09 11:56:31 回复

        url + fn + '?vkey=' + fvkey +'&vt=116'
        大神,是不是这样组合呀?我是大白,不是太懂。谢谢大神耐心指教。

      1. 来宾2018-03-10 08:45:08 回复

        N个组合,没什么用

        1. admin2018-03-12 00:15:10 回复

          抱歉,怪我没有仔细测试,凭感觉瞎说,经过测试跟后面几组URL无关,这个接口是抓包微信公众号引用腾讯视频的页面而来的,而微信公众号引用的腾讯视频只能支持高清480P,而不支持超高清,超高清需要去抓包腾讯视频APP,刚才抓了一下,参数比较复杂,需要花大量时间去研究,暂时放弃了。

      1. 来宾2018-03-12 12:25:05 回复

        嗯。如以后有好消息,麻烦发上来哦。谢谢。

  1. admin2018-03-09 02:31:51 回复

    以上面这个3的json为例子,你看到"ui"后面有四组URL了没?有"vt":106跟"vt":116两种,就是代表不同清晰度的,你可以自己组合一下。

    1. 来宾2018-03-09 11:56:31 回复

      url + fn + '?vkey=' + fvkey +'&vt=116'
      大神,是不是这样组合呀?我是大白,不是太懂。谢谢大神耐心指教。

    1. 来宾2018-03-10 08:45:08 回复

      N个组合,没什么用

      1. admin2018-03-12 00:15:10 回复

        抱歉,怪我没有仔细测试,凭感觉瞎说,经过测试跟后面几组URL无关,这个接口是抓包微信公众号引用腾讯视频的页面而来的,而微信公众号引用的腾讯视频只能支持高清480P,而不支持超高清,超高清需要去抓包腾讯视频APP,刚才抓了一下,参数比较复杂,需要花大量时间去研究,暂时放弃了。

    1. 来宾2018-03-12 12:25:05 回复

      嗯。如以后有好消息,麻烦发上来哦。谢谢。

  1. 来宾2018-03-09 11:56:31 回复

    url + fn + '?vkey=' + fvkey +'&vt=116'
    大神,是不是这样组合呀?我是大白,不是太懂。谢谢大神耐心指教。

  1. 来宾2018-03-10 08:45:08 回复

    N个组合,没什么用

    1. admin2018-03-12 00:15:10 回复

      抱歉,怪我没有仔细测试,凭感觉瞎说,经过测试跟后面几组URL无关,这个接口是抓包微信公众号引用腾讯视频的页面而来的,而微信公众号引用的腾讯视频只能支持高清480P,而不支持超高清,超高清需要去抓包腾讯视频APP,刚才抓了一下,参数比较复杂,需要花大量时间去研究,暂时放弃了。

  1. admin2018-03-12 00:15:10 回复

    抱歉,怪我没有仔细测试,凭感觉瞎说,经过测试跟后面几组URL无关,这个接口是抓包微信公众号引用腾讯视频的页面而来的,而微信公众号引用的腾讯视频只能支持高清480P,而不支持超高清,超高清需要去抓包腾讯视频APP,刚才抓了一下,参数比较复杂,需要花大量时间去研究,暂时放弃了。

  1. 来宾2018-03-12 00:20:50 回复

    大神,http://vv.video.qq.com 不在request 合法域名怎么办?

    1. 来宾2018-05-03 12:25:08 回复

      在小程序后台添加https://vv.video.qq.com 作为信任域名

      1. 来宾2018-05-09 09:46:02 回复

        小程序配置不了这个业务域名吧vv.video.qq.com 业务域名需经过ICP备案这个域名不是自己的域名 怎么设置啊

  1. 来宾2018-03-12 00:53:49 回复

    大神,为什么我request的返回和在浏览器中查看的不一样??

  1. 来宾2018-03-12 12:25:05 回复

    嗯。如以后有好消息,麻烦发上来哦。谢谢。

  1. 来宾2018-03-12 12:48:50 回复

    大神,是不是现在不行了?403错误。是抓取的。

  1. 来宾2018-03-12 15:11:20 回复

    大神,502错误

  1. 来宾2018-03-12 15:44:04 回复

    大神啊,按照您的方法,调试版没问题,手机预览就不行了。是不是因为现在只能https了?http的就说request不合法。。

    1. 来宾2018-03-29 11:40:18 回复

      我也是这样 =。= 测试版可以看,手机预览就是黑屏的。会不会是手机不支持普清的?需要挂个高清的参数呢?

    1. 来宾2018-03-29 11:45:23 回复

      打开手机调试 又正常了,好玄幻啊

    1. 来宾2018-05-03 12:19:29 回复

      腾讯视频支持 https 的,上线也可以,可以直接在前端写个 js 解决所有问题

  1. 来宾2018-03-23 18:00:50 回复

    您好,第四步、把前面的QZOutputJson=跟最后的 ; 过滤掉,得到一个json字符串了。解析它变成json对象,然后把标红的三个部分组合一下,这里的组合是怎么组合?用的什么类?或者什么方法?能直接拿到key对应的value值吗?在java后端中,我是通过截取字符串最后拼接成功的,但感觉有点麻烦,您有什么好一点的方法吗?

    1. 来宾2018-04-17 13:24:59 回复

      解析 json啊

  1. 来宾2018-03-29 11:40:18 回复

    我也是这样 =。= 测试版可以看,手机预览就是黑屏的。会不会是手机不支持普清的?需要挂个高清的参数呢?

  1. 来宾2018-03-29 11:45:23 回复

    打开手机调试 又正常了,好玄幻啊

  1. 来宾2018-04-17 13:24:13 回复

    好像只能 拿到五分钟的

  1. 来宾2018-04-17 13:24:59 回复

    解析 json啊

  1. 来宾2018-05-03 12:18:18 回复

    我本来想法前端直接解决的源码,但是被删除了

  1. 来宾2018-05-03 12:19:29 回复

    腾讯视频支持 https 的,上线也可以,可以直接在前端写个 js 解决所有问题

  1. 来宾2018-05-03 12:25:08 回复

    在小程序后台添加https://vv.video.qq.com 作为信任域名

    1. 来宾2018-05-09 09:46:02 回复

      小程序配置不了这个业务域名吧vv.video.qq.com 业务域名需经过ICP备案这个域名不是自己的域名 怎么设置啊

  1. 来宾2018-05-09 09:46:02 回复

    小程序配置不了这个业务域名吧vv.video.qq.com 业务域名需经过ICP备案这个域名不是自己的域名 怎么设置啊

发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项