web-dev-qa-db-ja.com

ビデオIDからFacebookビデオのサムネイルを取得するにはどうすればよいですか?

以下のコードを使用して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 または、他の何か?

15
Mohd Shahid

このGraphAPI URLにアクセスすると、ビデオIDからサムネイル画像を取得できます https://graph.facebook.com/VIDEO_ID/picture 、例: https://graph.facebook.com/115316011865684/picture

32
C Abernathy

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

この2番目のソリューションには、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('&amp;','&',$image);
  if (strpos($image,'&')) {print "Answer: $image\n";}
 }

このページをダウンロードすると、FacebookはメタプロパティTwitter:imageも提供しますが、その画像は200x200しかないことに注意してください。 Facebookがお尻にそれほど苦労しなかった場合、メタプロパティog:imageにも適切なサイズの画像を提供しますが、提供しません。

7
Eric Klien

私はそれを得る:

https://graph.facebook.com/VIDEO_ID?fields=format,source

これにより、サムネイルURLと埋め込み用のHTMLを含む利用可能なフォーマットの配列が得られます。また、source属性はビデオの.mp4URLを取得します。

試してください: https://graph.facebook.com/1706818892661729?fields=format,source

1
Jure

facebookのグラフに関する退屈なドキュメントを読まなくても、質問に答えるためのphp関数を作成しました。必要なのは、ビデオリンク、Facebook、YouTubeを挿入することだけですが、他のソースを追加するように変更することもできます。アドレスバーにあるYouTubeビデオリンクをコピーするだけです。Facebookの場合は、ビデオを右クリックして[ビデオのURLを表示]をクリックし、それをコピーします。

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