https://graph.facebook.com/VIDEO_ID会提供更多信息,包括更大的缩略图供选择。(您可以在
https://developers.facebook.com/docs/graph-api/reference/video上获取可用信息列表。)
这是一些PHP代码,可以找到最大的缩略图:
$data = file_get_contents("https://graph.facebook.com/$video_id?fields=format");
if ($data !== FALSE)
{
$result=json_decode($data);
$count=count($result->format)-1;
$thumbnail=$result->format[$count]->picture;
}
更新:自2017年7月10日起,Facebook更改了其API,因此上述代码已进行更新。以下是一些附加的PHP代码,以获取视频的大缩略图,以防Facebook再次更改内容:
$data = file_get_contents("https://graph.facebook.com/$video_id/thumbnails?access_token=$facebook_access_token");
if ($data !== FALSE)
{
$result=json_decode($data);
$thumbnail=$result->data[0]->uri;
}
这个第二种解决方案需要一个Facebook访问令牌。以下是获取Facebook访问令牌的说明:
https://smashballoon.com/custom-facebook-feed/access-token/
更新: Facebook正在越来越难以获得具有必要权限的访问令牌,以执行这样简单的任务。以下是如何从原始HTML中获取信息的方法:
$data = `curl -s -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0' -L 'https://www.facebook.com/1706818892661729/'`;
if (preg_match('#<video [^>]+></video>\s*<div [^>]+><img [^>]+src="([^"]+)#s',$data,$matches))
{
$image = $matches[1]; $image = str_replace('&','&',$image);
if (strpos($image,'&')) {print "Answer: $image\n";}
}
请注意,如果您下载该页面,Facebook还会提供meta属性twitter:image,但该图像仅为200x200。如果Facebook不那么麻烦的话,它们也会提供meta属性og:image和一个体面大小的图像,但他们没有这样做。