代码之家  ›  专栏  ›  技术社区  ›  eKek0

如何使用javascript获取YouTube的视频静态图像?

  •  6
  • eKek0  · 技术社区  · 15 年前

    在视频库中,YouTube显示视频的图像,而不是Flash播放器。如果单击图像,则会重定向到Flash视频播放器所在的页面。我想显示第一个静态图像。

    我怎样才能以编程的方式做到这一点?

    2 回复  |  直到 12 年前
        1
  •  9
  •   Tyler Carter    15 年前

    对于javascript:(我假设您将其标记为flash,因为YouTube是一个flash视频播放器)

    function getScreen( url, size )
    {
      if(url === null){ return ""; }
    
      size = (size === null) ? "big" : size;
      var vid;
      var results;
    
      results = url.match("[\\?&]v=([^&#]*)");
    
      vid = ( results === null ) ? url : results[1];
    
      if(size == "small"){
        return "http://img.youtube.com/vi/"+vid+"/2.jpg";
      }else {
        return "http://img.youtube.com/vi/"+vid+"/0.jpg";
      }
    }
    

    发现 here .

    从这个函数开始,基本上你只需要取v=ladlfasd参数并把它放到这个URL中:

    http://img.youtube.com/vi/(v= parameter)/2.jpg
    

    其中,小的是2.jpg,大的是0.jpg

        2
  •  3
  •   gion_13 Nicolae Olariu    12 年前
    function getYoutubeThumbnail($url)
    {
    
        if(preg_match('![?&]{1}v=([^&]+)!', $url . '&', $m))
        {
            $videoid = $m[1];
        }
        else if(preg_match('~/v/([0-9a-z_]+)~i', $url, $m))
        {
            $videoid = $m[1];
        }
    
        $youtube_thumbnail = 'http://img.youtube.com/vi/' . $videoid . '/default.jpg';
    
        $c = curl_init();
    
        $url = trim($url);
    
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    
        curl_setopt($c, CURLOPT_URL, $url);
    
        $contents = curl_exec($c);
    
        curl_close($c);
    
    
        $feed = "http://gdata.youtube.com/feeds/api/videos/".$videoid;
    
        $newInfo = trim(@file_get_contents($feed));
    
        preg_match('/<media:title(.*?)<\/media:title>/', $newInfo, $result);
    
        $title = strip_tags($result[0]);
    
        preg_match('/<media:keywords(.*?)<\/media:keywords>/', $newInfo, $result);
    
         $desc = strip_tags(str_replace(",", "", $result[0]));
    
         //embed path
         $embed_path = "http://www.youtube.com/embed/".$videoid;
    
    
    
        $youtube_info = array('videoid' => $videoid,'title' => $title, 'description' => $desc,'youtube_thumbnail' => $youtube_thumbnail,'embed_path' => $embed_path) ;
    
        return $youtube_info;
    
    }