优酷并不像youtube那样提供获取缩略图的API,要获取优酷缩略图,一种方法是用ffmpeg直接读取上述网站的某个视频,然后截取其中的某帧作为该视频的缩略图;另外一种方式则是想办法读取网站自身提供的视频缩略图。前者需要安装ffmpeg,暂时没有办法测试。所以选用第二种方法,通过正则表达式获取优酷自身提供的视频缩略图。
如何获取
function get_youku_thumb($url) { $content = file_get_contents($url); preg_match( '/id="s_msn2".*?screenshot=(.*?)".?target=/', $content, $matchs ); return $matchs[1]; } echo get_youku_thumb('http://v.youku.com/v_show/id_XMjkwMjg5MDQw.html');
运行上述代码,获取的图片路径是
//output http://g2.ykimg.com/01270F1F464F50877DA3960123193C0A16F2D8-447A-D539-840F-E8AC55D15507
这种方法是在网上发现的,原出处是用PHP获取优酷、土豆视频缩略图,不过正如文章作者所说,一旦优酷改变网页结构,代码也得跟着变。这篇文章中的方法已经无法获取缩略图了, 所以写了上面的代码。
思路与原作者是相同的,通过读取优酷视频网页的代码,找到分享到社交网站(新浪、msn等)的代码,看看这部分是怎么写的,用正则表达式匹配。我使用的是转发到msn的代码,如下
<a title="转发到MSN" charset="400-03-20" id="s_msn2" href="http://profile.live.com/badge/?url=http://v.youku.com/v_show/id_XMzU5NzEyNjI4.html&Title=%E3%80%90iu%E9%85%B7%E6%92%AD%E3%80%91%E4%BC%98%E9%85%B7%E5%87%BA%E5%93%81%E3%80%8A%E6%98%A5%E6%9A%96%E8%8A%B1%E5%BC%80%E3%80%8B%E5%8C%97%E4%BA%AC%E7%83%AD%E6%8B%8D120303&swfurl=http://player.youku.com/player.php/sid/XMzU5NzEyNjI4/v.swf&screenshot=http://g4.ykimg.com/0100641F464F5196D3864F053E026161283E81-3C7E-B99C-E200-F6AF0A7FDF82" target="_blank"><img src="http://static.youku.com/v1.0.0744/v/img/ico_msn.png" /></a>
改善一下可读性,就变成下面这样
<a title="转发到MSN" charset="400-03-20" id="s_msn2" href="http://profile.live.com/badge/? url=[视频网址] &Title=[视频标题] &swfurl=[swfurl] &screenshot=[缩略图地址,我们需要的部分]" target="_blank"> <img src="http://static.youku.com/v1.0.0744/v/img/ico_msn.png" /> </a>
有了这个结构,就可以写正则表达式匹配了。如果优酷更新结构,可以按照同样的方法更新正则表达式。但还是希望优酷能像youtube那样多一些API,方便开发者。
把过去的图片WordPress的缩略图,可以将获取缩略图的代码做成shortcode,直接在文章中调用。也可以通过custom_field方式记录优酷视频地址,在主循环中调用该函数获得缩略图,借助timthumb.php等脚本生成缓存存放到本地,就不用每次都去读网页了。
2012-08-04更新
发现有人已经做了现成的库可以调用,大家到这里获取。
大师,文章中视频可否截取缩略图
那要看是啥视频。比如优酷的话,你先获取文章里优酷视频的地址(正则表达式),再用文中的方法获取视频截图。我没试过,不过理论上还是可行的吧。
前来取经
没有API是比较蛋疼啊。。
而且缩略图只有小的,不知道有没有办法搞到首页焦点那么大的图。
不过那个大图可能为了节约,是被推到首页时再生成的也说不定。
严重同意,不如YouTube方便
优酷视频缩略图不知道是随机截取的,还是怎么截取的
不知道怎么截取的,优酷首页那个大视频的截图就比较大,其它的视频我只找到了尺寸比较小的缩略图
利用分享的方法我有想过 可不能实现自动化 懊恼中
你说的自动化是什么样?难道视频地址也要自动插入?
好的,沙发~~~
多谢捧场