我如何才能访问YouTube视频的缩略图收集使用从YouTube API的视频链接。我想缩略图显示在网站上使用PHP使用的视频ID存储在一个变量,例如$link。
$link
kuhbmx9i1#
YouTube在其服务器上为不同的设备存储了许多不同类型的缩略图。您可以通过使用每个YouTube视频所具有的视频ID来访问它。您可以使用变量$link在网站上显示图像,该变量保存视频的ID并将其替换为链接中的video_ID。低质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
字符串中等质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
型高质量的缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
型最高质量缩略图:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
型
示例:
如果您想访问以下视频的缩略图:
https://www.youtube.com/watch?v=Q-GYwhqDo6o
型视频编号:Q-GYwhqDo6o所以,这是视频缩略图链接看起来像:
Q-GYwhqDo6o
http://img.youtube.com/vi/Q-GYwhqDo6o/mqdefault.jpg
型希望对你有帮助。享受编程吧。
7hiiyaii2#
要获得高质量的图像,您可以使用以下URL,该URL是从youtube API获取的
$video_id = explode("?v=", $link); $video_id = $video_id[1]; $thumbnail="http://img.youtube.com/vi/".$video_id."/maxresdefault.jpg";
字符串
pjngdqdw3#
你可以使用下面的代码。它是为我工作。选择图像质量按照您的要求。
<?php $youtubeID = getYouTubeVideoId('youtube video url'); $thumbURL = 'https://img.youtube.com/vi/' . $youtubeID . '/mqdefault.jpg'; print_r($thumbURL); function getYouTubeVideoId($pageVideUrl) { $link = $pageVideUrl; $video_id = explode("?v=", $link); if (!isset($video_id[1])) { $video_id = explode("youtu.be/", $link); } $youtubeID = $video_id[1]; if (empty($video_id[1])) $video_id = explode("/v/", $link); $video_id = explode("&", $video_id[1]); $youtubeVideoID = $video_id[0]; if ($youtubeVideoID) { return $youtubeVideoID; } else { return false; } } ?>
c2e8gylq4#
这里是我的方便功能下载YouTube缩略图图像
function downloadYouTubeThubnailImage($youTubeLink='',$thumbNamilQuality='',$fileNameWithExt='',$fileDownLoadPath='') { $videoIdExploded = explode('?v=', $youTubeLink); if ( sizeof($videoIdExploded) == 1) { $videoIdExploded = explode('&v=', $youTubeLink); $videoIdEnd = end($videoIdExploded); $removeOtherInVideoIdExploded = explode('&',$videoIdEnd); $youTubeVideoId = current($removeOtherInVideoIdExploded); }else{ $videoIdExploded = explode('?v=', $youTubeLink); $videoIdEnd = end($videoIdExploded); $removeOtherInVideoIdExploded = explode('&',$videoIdEnd); $youTubeVideoId = current($removeOtherInVideoIdExploded); } switch ($thumbNamilQuality) { case 'LOW': $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/sddefault.jpg'; break; case 'MEDIUM': $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/mqdefault.jpg'; break; case 'HIGH': $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/hqdefault.jpg'; break; case 'MAXIMUM': $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/maxresdefault.jpg'; break; default: return 'Choose The Quality Between [ LOW (or) MEDIUM (or) HIGH (or) MAXIMUM]'; break; } if( empty($fileNameWithExt) || is_null($fileNameWithExt) || $fileNameWithExt === '') { $toArray = explode('/',$imageUrl); $fileNameWithExt = md5( time().mt_rand( 1,10 ) ).'.'.substr(strrchr(end($toArray),'.'),1); } if (! is_dir($fileDownLoadPath)) { mkdir($fileDownLoadPath,0777,true); } file_put_contents($fileDownLoadPath.$fileNameWithExt, file_get_contents($imageUrl)); return $fileNameWithExt; }
字符串第一个月阿尔古梅茨
$youTubeLinkYoutube网址for examplehttps://www.youtube.com/watch?v=a3ICNMQW7Ok$thumbNamilQuality它有许多质量,如LOW ,MEDIUM, HIGH, MAXIMUM
$youTubeLink
for example
https://www.youtube.com/watch?v=a3ICNMQW7Ok
$thumbNamilQuality
LOW ,MEDIUM, HIGH, MAXIMUM
缩略图质量列表取自**https://stackoverflow.com/a/32346348/8487424**&&https://stackoverflow.com/a/47546113/8487424
$fileNameWithExt带扩展名的文件名for examplemyfavouriteimage.png
$fileNameWithExt
myfavouriteimage.png
注:$fileNameWithExt不是强制性的,它将为Example91b2a30d0682058ebda8d71606f5e327.jpg生成基于uuid的文件名如果你想把文件放到自定义目录,使用这个参数注意$fileDownLoadPath不是强制性的,它将在脚本执行的位置生成映像文件一些示例
Example
91b2a30d0682058ebda8d71606f5e327.jpg
uuid
$fileDownLoadPath
$folderpath = 'c:'.DIRECTORY_SEPARATOR.'xampp'.DIRECTORY_SEPARATOR.'htdocs'.DIRECTORY_SEPARATOR.'youtube'.DIRECTORY_SEPARATOR; $imageName = 'mybeautfulpic.jpg'; downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','MAXIMUM',null,$folderpath ); downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','LOW',$imageName ,null);
型希望已经回答了,但是这个函数有some exta features
some exta features
eivgtgni5#
Google在v.3上改变了API,那些来自Python的代码完全可以工作!你可以用于PHP。
def get_small_image_url(self): return 'http://img.youtube.com/vi/%s/%s.jpg' % (self.video_id, random.randint(1, 3)) def get_hqdefault(self): return 'http://i1.ytimg.com/vi/%s/hqdefault.jpg' % self.video_id def get_mqdefault(self): return 'http://i1.ytimg.com/vi/%s/mqdefault.jpg' % self.video_id def get_sddefault(self): return 'http://i1.ytimg.com/vi/%s/sddefault.jpg' % self.video_id def get_video_id(self, url): link = urlparse.urlparse(url) if link.hostname == 'youtu.be': return link.path[1:] if link.hostname in ('www.youtube.com', 'youtube.com'): if link.path == '/watch': state = urlparse.parse_qs(link.query) return state['v'][0] if link.path[:7] == '/embed/': return link.path.split('/')[2] if link.path[:3] == '/v/': return link.path.split('/')[2] return False def get_meta(self, video_id): api_token = **'here your API_Token'** url = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=%s&key=%s' % (video_id, api_token) response = json.load(urllib.urlopen(url)) print response context = { 'title': response['items'][0]['snippet']['localized']['title'], 'desc': response['items'][0]['snippet']['localized']['description'] } return context def save(self, force_insert=False, force_update=False, using=None, update_fields=None): video_id = self.get_video_id(self.url) meta = self.get_meta(video_id) self.video_id = video_id self.title = meta['title'] self.description = meta['desc'] super(Videos, self).save( force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields )
4uqofj5v6#
使用str_replace从youtube链接中获取youtube-video-id的最简单和最简单的方法。
$youtube_ids = str_replace("https://www.youtube.com/watch?v=", "", "https://www.youtube.com/watch?v=QBKdaUv5YaI"); echo 'http://img.youtube.com/vi/'.$youtube_ids.'/maxresdefault.jpg';
字符串低质量缩略图:
echo 'http://img.youtube.com/vi/'.$youtube_ids.'/sddefault.jpg';
型中等质量缩略图:
echo 'http://img.youtube.com/vi/'.$youtube_ids.'/mqdefault.jpg';
echo 'http://img.youtube.com/vi/'.$youtube_ids.'/hqdefault.jpg';
echo 'http://img.youtube.com/vi/'.$youtube_ids.'/maxresdefault.jpg';
30byixjq7#
只是添加我的2美分。我更喜欢存储在我的服务器上的图像预览。我使用的代码草案是:
// from and destination sources $src_yt = "https://i.ytimg.com/vi/$ytcode/mqdefault.jpg"; // file on youtube $dest = $_SERVER['DOCUMENT_ROOT']."/video/$prevtype/$ytcode.jpg"; // destination /* Add notice for success/failure */ if( !copy( $src_yt, $dest ) ) { echo "ALT! failed to copy $src_yt...\n"; } else { echo "OK! success to copy $src_yt...\n"; }
7条答案
按热度按时间kuhbmx9i1#
YouTube在其服务器上为不同的设备存储了许多不同类型的缩略图。您可以通过使用每个YouTube视频所具有的视频ID来访问它。您可以使用变量
$link
在网站上显示图像,该变量保存视频的ID并将其替换为链接中的video_ID。低质量缩略图:
字符串
中等质量缩略图:
型
高质量的缩略图:
型
最高质量缩略图:
型
示例:
如果您想访问以下视频的缩略图:
型
视频编号:
Q-GYwhqDo6o
所以,这是视频缩略图链接看起来像:
型
希望对你有帮助。享受编程吧。
7hiiyaii2#
要获得高质量的图像,您可以使用以下URL,该URL是从youtube API获取的
字符串
pjngdqdw3#
你可以使用下面的代码。它是为我工作。选择图像质量按照您的要求。
字符串
c2e8gylq4#
这里是我的方便功能下载YouTube缩略图图像
字符串
第一个月
阿尔古梅茨
$youTubeLink
Youtube网址for example
https://www.youtube.com/watch?v=a3ICNMQW7Ok
$thumbNamilQuality
它有许多质量,如LOW ,MEDIUM, HIGH, MAXIMUM
缩略图质量列表取自**https://stackoverflow.com/a/32346348/8487424**
&&https://stackoverflow.com/a/47546113/8487424
$fileNameWithExt
带扩展名的文件名for example
myfavouriteimage.png
注:
$fileNameWithExt
不是强制性的,它将为Example
91b2a30d0682058ebda8d71606f5e327.jpg
生成基于uuid
的文件名如果你想把文件放到自定义目录,使用这个参数
注意
$fileDownLoadPath
不是强制性的,它将在脚本执行的位置生成映像文件一些示例
型
希望已经回答了,但是这个函数有
some exta features
eivgtgni5#
Google在v.3上改变了API,那些来自Python的代码完全可以工作!你可以用于PHP。
字符串
4uqofj5v6#
使用str_replace从youtube链接中获取youtube-video-id的最简单和最简单的方法。
字符串
低质量缩略图:
型
中等质量缩略图:
型
高质量的缩略图:
型
最高质量缩略图:
型
30byixjq7#
只是添加我的2美分。我更喜欢存储在我的服务器上的图像预览。我使用的代码草案是:
字符串