2011-08-09 215 views
12

我試圖嵌入Facebook的視頻使用下面的代碼:如何從視頻ID獲取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> 

它的正常工作,但沒有任何類似的方式來顯示從視頻ID視頻縮略圖?
例如:http://www.facebook.com/thumbnail/115316011865684 還是別的?

回答

22

您可以通過轉到此Graph API網址 - https://graph.facebook.com/VIDEO_ID/picture(例如,您可以從視頻ID獲取縮略圖)。 https://graph.facebook.com/115316011865684/picture

+1

謝謝,它幫助了我:)...我可以通過這種方式獲得視頻標題嗎? –

+1

要獲得視頻標題,請致電https://graph.facebook.com/VIDEO_ID並查找返回的「名稱」字段。 「圖片」字段也將與此調用一起返回並對應於縮略圖。欲瞭解更多詳情,請參閱https://developers.facebook.com/docs/reference/api/video/ –

+0

這是相當小的圖片,我可以像youtube一樣獲得更大的縮略圖嗎? – TomSawyer

6

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的上述已更新的代碼改變他們在7月10日API,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/

+2

看來,這隻適用於網頁而不適用於用戶。儘管它對頁面很好用。對於用戶來說,他們必須通過我所能說明的方式進行認證和授予許可。 – Jake

+0

@jake我認爲有可能獲得用戶上傳的視頻。我可以看到很多可以做到這一點的在線Facebook視頻下載器。我很想知道他們如何設法這樣做。 – basagabi

+0

2016年2月,當我研究這個問題時,用戶的視頻並沒有真正的做法,但是您可以使用Page的視頻來完成。我不確定你在看什麼,但這不是關於在Facebook上觀看視頻。如果您在Facebook上看到縮略圖,並顯示在另一個網站上,則它們要麼來自Facebook頁面(不是用戶),要麼來自使用該API的用戶的許可。這是一個大問題,用戶被鎖定,你必須通過API獲得他們的許可才能使用他們的內容。 – Jake

0

我創建了一個PHP函數來回答你的問題,不用您去通過閱讀關於Facebook圖形枯燥的文檔。 您只需插入視頻鏈接,Facebook和YouTube,但您可以修改以添加其他來源。 只需在地址欄中爲YouTube複製YouTube視頻鏈接,然後右鍵點擊視頻並點擊顯示視頻網址,然後複製該視頻鏈接。

//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; 
}