【发布时间】:2012-05-09 18:32:32
【问题描述】:
我在我的主页上显示了很多来自 youtube 视频的拇指。我在下面使用此功能从 youtube 网址中获取拇指,该网址运行速度很快,但不适用于像 youtu.be/JSHDLSKL 这样的缩短形式的网址。
function get_youtube_screen_link( $url = '', $type = 'default', $echo = true ) {
if( empty( $url ) )
return false;
if( !isset( $type ) )
$type = '';
$url = esc_url( $url );
preg_match("|[\\?&]v=([^&#]*)|",$url,$vid_id);
if( !isset( $vid_id[1] ) )
return false;
$img_server_num = 'i'. rand(1,4);
switch( $type ) {
case 'large':
$img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/0.jpg";
break;
case 'first':
// Thumbnail of the first frame
$img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/1.jpg";
break;
case 'small':
// Thumbnail of a later frame(i'm not sure how they determine this)
$img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/2.jpg";
break;
case 'default':
case '':
default:
$img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/default.jpg";
break;
}
if( $echo )
echo $img_link;
else
return $img_link;
}
所以我尝试使用 Oembed 来获取拇指,而不是它适用于 youtube 网址的所有变体,但它会检索 480px/360px 拇指,这会导致大量裁剪以将其缩小到我使用的 120px/90px 大小显示它们。另一个问题是它导致我的页面速度增加了 4 秒,我猜这是我实现它的方式的问题。这是我在循环中调用拇指的方式。
<?php
require_once(ABSPATH.'wp-includes/class-oembed.php');
$oembed= new WP_oEmbed;
$name = get_post_meta($post->ID,'video_code',true);
$url = $name;
//As noted in the comments below, you can auto-detect the video provider with the following
$provider = $oembed->discover($name);
//$provider = 'http://www.youtube.com/oembed';
$video = $oembed->fetch($provider, $url, array('width' => 300, 'height' => 175));
$thumb = $video->thumbnail_url; if ($thumb) { ?>
<img src="<?php echo $thumb; ?>" width="120px" height="90px" />
<?php } ?>
那么我应该如何做到这一点以最大限度地提高效率?
【问题讨论】:
-
使用 oembed 获取 id 以及您的第一个函数的其他部分 - 或者您的问题是什么?
-
你的意思是使用oembed获取标准url,然后使用第一个函数获取拇指?我的问题是人们提交 youtube 网址以在我的网站上发布视频。顶部功能不会获得 url 的 youtu.be 版本的拇指。使用 Oembed 获取拇指得到 480/360 版本,这对我来说会导致不必要的裁剪。它增加了加载时间,我不知道为什么。
-
这似乎不适用于浏览器中显示的实际视频的网址。我说的是像
http://www.youtube.com/watch?v=bCDHeEbG3g8&feature=g-all-u这样的长格式 -
我强烈建议您稍微搜索一下该站点,因为您遇到的所有问题都已经被询问和回答 - 真的。您不是第一个寻找 youtube 图片的人(难怪您是否考虑到该网站的受欢迎程度)。请记住,如果 Google 将来更改 youtube URI 的布局,所有现有的解决方案可能不再适用。
标签: youtube-api thumbnails oembed