Ответ 1
Вы можете получить уменьшенное изображение из идентификатора видео, перейдя на этот URL-адрес API-интерфейса Graph - https://graph.facebook.com/VIDEO_ID/picture, например. https://graph.facebook.com/115316011865684/picture
Я пытаюсь вставить Facebook-видео, используя следующий код:
<object width="400" height="224" >
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="movie" value="http://www.facebook.com/v/115316011865684" />
<embed src="http://www.facebook.com/v/115316011865684" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="224">
</embed>
</object>
Он отлично работает, но есть ли похожий способ показать видео эскиз с идентификатора видео?
Например: http://www.facebook.com/thumbnail/115316011865684
или что-то еще?
Вы можете получить уменьшенное изображение из идентификатора видео, перейдя на этот URL-адрес API-интерфейса Graph - https://graph.facebook.com/VIDEO_ID/picture, например. https://graph.facebook.com/115316011865684/picture
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;
}
Обновление: приведенный выше код был обновлен с тех пор, как Facebook изменил свой API 10 июля 2017 года. Вот еще один 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 также предоставляет метасвойство twitter: image, но это изображение имеет размер только 200x200. Если бы Facebook не был такой болью в заднице, они также предоставили бы мета-свойство og: image с изображением приличного размера, но это не так.
Я просто понимаю:
https://graph.facebook.com/VIDEO_ID?fields=format,source
Это даст вам массив доступных форматов с эскизом URL и HTML для встраивания. Также атрибут source получает URL-адрес видео .mp4.
Попробуйте: https://graph.facebook.com/1706818892661729?fields=format,source
Я создал функцию php, чтобы ответить на ваш вопрос, если вам не придется читать скучную документацию о графике facebook. Все, что вам нужно, это просто вставить свою видео ссылку, facebook и youtube, но вы можете изменить ее, чтобы добавить другие источники. просто скопируйте видео-ссылку youtube в панель addres и для facebook, щелкните правой кнопкой мыши по видео и нажмите на ссылку для показа видео, затем скопируйте это.
//get video thumbnail for facebook and youtube
function get_vid_thumbnail($link){
$thumbnail='';
//check if video link is facebook
if (strpos($link, 'facebook') !== false) {
$thumbnail=fb_thumb($link);
//$thumbnail='fb';
}
//check if video link is youtube
if (strpos($link, 'youtube.com') !== false) {
$thumbnail=youtube_thumb($link);
//$thumbnail='youtube';
}
return $thumbnail;
}
//supporting functions
//get youtube thumbnail
function youtube_thumb($link){
$new=str_replace('https://www.youtube.com/watch?v=','', $link);
$vv='https://img.youtube.com/vi/'.$new.'/0.jpg';
return $vv;
}
//clean the facebook link
function fb_video_id($url) {
//split the url
$main=parse_url($url);
//get the pathe and split to get the video id
$main=$main['path'];
$main=explode('/',$main);
$main=$main[3];
return $main;
}
//get the thumbnail
function fb_thumb($link) {
$img = 'https://graph.facebook.com/'.fb_video_id($link).'/picture';
return $img;
}
//get video thumbnail for fb and youtube ends
//get embed url for facebook and youtube to be used as video source
function get_vid_embed_url($link){
$embed_url='sss';
//check if video link is facebook
if (strpos($link, 'facebook') !== false) {
# code...
$embed_url=fb_embed_link($link);
//$thumbnail='fb';
}
//check if video link is youtube
if (strpos($link, 'youtube.com') !== false) {
# code...
$embed_url=youtube_embed_link($link);
//$thumbnail='youtube';
}
return $embed_url;
}
//get youtube embed link
function youtube_embed_link($link){
$new=str_replace('https://www.youtube.com/watch?v=','', $link);
$link='https://www.youtube.com/embed/'.$new;
return $link;
}
//get facebook embed link
function fb_embed_link($link) {
$link = 'https://www.facebook.com/plugins/video.php?href='.$link.'&show_text=0&width=560';
return $link;
}