Rutube – получаем изображение ролика (thumbnail)
Стала необходимость получить картинку для роликов вставленных с youtube / rutube, с youtub-ом всё быстро и понятно, а вот с rutub-ом мне пришлось повозится, поэтому и решил написать, может кому то поможет и сэкономит время.
Есть 2 варианта – клиентский и серверный, так как я работаю с PHP, мне нужен 2й, оказалось всё довольно просто, необходимая информация лежит по урлу
http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=ID_Ролика&utf=1 |
ну тут всё понятно подставляем свой урл и парсим XML, где помимо ссылок на картинки к роликам рутюба, лежит и вся остальная инфа о ролике, всё просто
Далее инфа с http://rodionblog.ru
Иногда требуется получить превью-, thumbnail-картинку (или, по-другому, уменьшенную версию кадра) видеофайла. Данные функции позволяют вытащить превьюшки видеофайлов с таких популярных сервисов как youtube, rutube, vimeo.
getVideoUrl($data)
, где $data – html-код для встраивания видео (обычно, начинается с <object> или <iframe>)
getVideoThumbUrl($url)
, где $url – src видеофайла
Выкладываю как есть:
function getVideoUrl ($data) {
if (preg_match("/<iframe.*?src=\"([^\"]+)\".*?><\/iframe>/i", $data, $matches)) {
$url = $matches[1];
}
if (preg_match("/<object.*?>.*?<param name=\"movie\" value=\"([^\"]+)\"( \/>|><\/param>).*?<\/object>/i", $data, $matches)) {
$url = $matches[1];
}
return $url;
}
function getVideoThumbUrl ($url) {
if (!is_string($url) || empty($url)) return false;
$url = str_replace("&amp;", "&", $url);
$arr = parse_url($url);
$arr[host] = str_replace('www.', '', $arr[host]);
$url = "";
switch ($arr[host]) {
case 'rutube.ru':
if (preg_match("/\/tracks\/(.+)\.html/i", $arr[path], $matches)) {
$xml = simplexml_load_file("http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=".$matches[1]."&utf=1");
if ($xml) {
$url = (string) $xml->response->movie->thumbnailLink;
}
}
break;
case 'video.rutube.ru':
if (preg_match("/\/(.+)/i", $arr[path], $matches)) {
$s[0] = substr($arr[path], 1, 2);
$s[1] = substr($arr[path], 3, 2);
$url = "http://tub.rutube.ru/thumbs/".$s[0]."/".$s[1]."/".$matches[1]."-1-1.jpg";
}
//$url = "http://img-1.rutube.ru/thumbs/".$link[0].$link[1]."/".$link[2].$link[3]."/".$link."-2.jpg";
break;
case 'youtube.com':
if (preg_match("/\/(embed|v)\/(.+)\/?/i", $arr[path], $matches)) {
$url = "http://img.youtube.com/vi/".$matches[2]."/0.jpg";
}
break;
case 'player.vimeo.com':
if (preg_match("/\/video\/(.+)\/?/i", $arr[path], $matches)) {
$clip_id = $matches[1];
}
$xml = simplexml_load_file('http://vimeo.com/api/v2/video/'.$clip_id.'.xml');
if ($xml) {
$url = (string) $xml->video->thumbnail_medium;
}
break;
case 'vimeo.com':
parse_str($arr[query], $query);
$clip_id = $query['clip_id'];
$xml = simplexml_load_file('http://vimeo.com/api/v2/video/'.$clip_id.'.xml');
if ($xml) {
$url = (string) $xml->video->thumbnail_medium;
}
break;
default:
$url = "";
break;
}
return $url;
} |
Как использовать:
// вытаскиваем src видеофайла
$url = getVideoUrl ($html);
// генерируем ссылку на превьюшку
$th_url = getVideoThumbUrl ($url);
// $th_url теперь содержит ссылку на уменьшенную копию кадра из видео $url
echo ‘<img src=”‘, $th_url, ‘” border=”0″ />

Разработка интернет-магазинов, скриптов, SEO и повышение конвертации. Менеджмент онлайн проектов.
Fuzaylov
27 Nov, 2010
Очень может пригодится для видео портала!
Дмитрий
15 Dec, 2010
Спасибо за статью, очень помогло! Жалко только что они превьюшки из середины ролика не делают(