获取YouTube视频缩略图并与PHP一起使用

hkmswyz6  于 2024-01-05  发布在  PHP
关注(0)|答案(7)|浏览(191)

我如何才能访问YouTube视频的缩略图收集使用从YouTube API的视频链接。我想缩略图显示在网站上使用PHP使用的视频ID存储在一个变量,例如$link

kuhbmx9i

kuhbmx9i1#

YouTube在其服务器上为不同的设备存储了许多不同类型的缩略图。您可以通过使用每个YouTube视频所具有的视频ID来访问它。您可以使用变量$link在网站上显示图像,该变量保存视频的ID并将其替换为链接中的video_ID。
低质量缩略图:

  1. http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg

字符串
中等质量缩略图:

  1. http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg


高质量的缩略图:

  1. http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg


最高质量缩略图:

  1. http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg

示例:

如果您想访问以下视频的缩略图:

  1. https://www.youtube.com/watch?v=Q-GYwhqDo6o


视频编号:Q-GYwhqDo6o
所以,这是视频缩略图链接看起来像:

  1. http://img.youtube.com/vi/Q-GYwhqDo6o/mqdefault.jpg


希望对你有帮助。享受编程吧。

展开查看全部
7hiiyaii

7hiiyaii2#

要获得高质量的图像,您可以使用以下URL,该URL是从youtube API获取的

  1. $video_id = explode("?v=", $link);
  2. $video_id = $video_id[1];
  3. $thumbnail="http://img.youtube.com/vi/".$video_id."/maxresdefault.jpg";

字符串

pjngdqdw

pjngdqdw3#

你可以使用下面的代码。它是为我工作。选择图像质量按照您的要求。

  1. <?php
  2. $youtubeID = getYouTubeVideoId('youtube video url');
  3. $thumbURL = 'https://img.youtube.com/vi/' . $youtubeID . '/mqdefault.jpg';
  4. print_r($thumbURL);
  5. function getYouTubeVideoId($pageVideUrl) {
  6. $link = $pageVideUrl;
  7. $video_id = explode("?v=", $link);
  8. if (!isset($video_id[1])) {
  9. $video_id = explode("youtu.be/", $link);
  10. }
  11. $youtubeID = $video_id[1];
  12. if (empty($video_id[1])) $video_id = explode("/v/", $link);
  13. $video_id = explode("&", $video_id[1]);
  14. $youtubeVideoID = $video_id[0];
  15. if ($youtubeVideoID) {
  16. return $youtubeVideoID;
  17. } else {
  18. return false;
  19. }
  20. }
  21. ?>

字符串

展开查看全部
c2e8gylq

c2e8gylq4#

这里是我的方便功能下载YouTube缩略图图像

  1. function downloadYouTubeThubnailImage($youTubeLink='',$thumbNamilQuality='',$fileNameWithExt='',$fileDownLoadPath='')
  2. {
  3. $videoIdExploded = explode('?v=', $youTubeLink);
  4. if ( sizeof($videoIdExploded) == 1)
  5. {
  6. $videoIdExploded = explode('&v=', $youTubeLink);
  7. $videoIdEnd = end($videoIdExploded);
  8. $removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
  9. $youTubeVideoId = current($removeOtherInVideoIdExploded);
  10. }else{
  11. $videoIdExploded = explode('?v=', $youTubeLink);
  12. $videoIdEnd = end($videoIdExploded);
  13. $removeOtherInVideoIdExploded = explode('&',$videoIdEnd);
  14. $youTubeVideoId = current($removeOtherInVideoIdExploded);
  15. }
  16. switch ($thumbNamilQuality)
  17. {
  18. case 'LOW':
  19. $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/sddefault.jpg';
  20. break;
  21. case 'MEDIUM':
  22. $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/mqdefault.jpg';
  23. break;
  24. case 'HIGH':
  25. $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/hqdefault.jpg';
  26. break;
  27. case 'MAXIMUM':
  28. $imageUrl = 'http://img.youtube.com/vi/'.$youTubeVideoId.'/maxresdefault.jpg';
  29. break;
  30. default:
  31. return 'Choose The Quality Between [ LOW (or) MEDIUM (or) HIGH (or) MAXIMUM]';
  32. break;
  33. }
  34. if( empty($fileNameWithExt) || is_null($fileNameWithExt) || $fileNameWithExt === '')
  35. {
  36. $toArray = explode('/',$imageUrl);
  37. $fileNameWithExt = md5( time().mt_rand( 1,10 ) ).'.'.substr(strrchr(end($toArray),'.'),1);
  38. }
  39. if (! is_dir($fileDownLoadPath))
  40. {
  41. mkdir($fileDownLoadPath,0777,true);
  42. }
  43. file_put_contents($fileDownLoadPath.$fileNameWithExt, file_get_contents($imageUrl));
  44. return $fileNameWithExt;
  45. }

字符串
第一个月
阿尔古梅茨

$youTubeLinkYoutube网址for examplehttps://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不是强制性的,它将为Example91b2a30d0682058ebda8d71606f5e327.jpg生成基于uuid的文件名
如果你想把文件放到自定义目录,使用这个参数
注意$fileDownLoadPath不是强制性的,它将在脚本执行的位置生成映像文件
一些示例

  1. $folderpath = 'c:'.DIRECTORY_SEPARATOR.'xampp'.DIRECTORY_SEPARATOR.'htdocs'.DIRECTORY_SEPARATOR.'youtube'.DIRECTORY_SEPARATOR;
  2. $imageName = 'mybeautfulpic.jpg';
  3. downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','MAXIMUM',null,$folderpath );
  4. downloadYouTubeThubnailImage('https://www.youtube.com/watch?v=a3ICNMQW7Ok','LOW',$imageName ,null);


希望已经回答了,但是这个函数有some exta features

展开查看全部
eivgtgni

eivgtgni5#

Google在v.3上改变了API,那些来自Python的代码完全可以工作!你可以用于PHP。

  1. def get_small_image_url(self):
  2. return 'http://img.youtube.com/vi/%s/%s.jpg' % (self.video_id, random.randint(1, 3))
  3. def get_hqdefault(self):
  4. return 'http://i1.ytimg.com/vi/%s/hqdefault.jpg' % self.video_id
  5. def get_mqdefault(self):
  6. return 'http://i1.ytimg.com/vi/%s/mqdefault.jpg' % self.video_id
  7. def get_sddefault(self):
  8. return 'http://i1.ytimg.com/vi/%s/sddefault.jpg' % self.video_id
  9. def get_video_id(self, url):
  10. link = urlparse.urlparse(url)
  11. if link.hostname == 'youtu.be':
  12. return link.path[1:]
  13. if link.hostname in ('www.youtube.com', 'youtube.com'):
  14. if link.path == '/watch':
  15. state = urlparse.parse_qs(link.query)
  16. return state['v'][0]
  17. if link.path[:7] == '/embed/':
  18. return link.path.split('/')[2]
  19. if link.path[:3] == '/v/':
  20. return link.path.split('/')[2]
  21. return False
  22. def get_meta(self, video_id):
  23. api_token = **'here your API_Token'**
  24. url = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=%s&key=%s' % (video_id, api_token)
  25. response = json.load(urllib.urlopen(url))
  26. print response
  27. context = {
  28. 'title': response['items'][0]['snippet']['localized']['title'],
  29. 'desc': response['items'][0]['snippet']['localized']['description']
  30. }
  31. return context
  32. def save(self, force_insert=False, force_update=False, using=None,
  33. update_fields=None):
  34. video_id = self.get_video_id(self.url)
  35. meta = self.get_meta(video_id)
  36. self.video_id = video_id
  37. self.title = meta['title']
  38. self.description = meta['desc']
  39. super(Videos, self).save(
  40. force_insert=force_insert,
  41. force_update=force_update,
  42. using=using,
  43. update_fields=update_fields
  44. )

字符串

展开查看全部
4uqofj5v

4uqofj5v6#

使用str_replace从youtube链接中获取youtube-video-id的最简单和最简单的方法。

  1. $youtube_ids = str_replace("https://www.youtube.com/watch?v=", "", "https://www.youtube.com/watch?v=QBKdaUv5YaI");
  2. echo 'http://img.youtube.com/vi/'.$youtube_ids.'/maxresdefault.jpg';

字符串
低质量缩略图:

  1. echo 'http://img.youtube.com/vi/'.$youtube_ids.'/sddefault.jpg';


中等质量缩略图:

  1. echo 'http://img.youtube.com/vi/'.$youtube_ids.'/mqdefault.jpg';


高质量的缩略图:

  1. echo 'http://img.youtube.com/vi/'.$youtube_ids.'/hqdefault.jpg';


最高质量缩略图:

  1. echo 'http://img.youtube.com/vi/'.$youtube_ids.'/maxresdefault.jpg';

展开查看全部
30byixjq

30byixjq7#

只是添加我的2美分。我更喜欢存储在我的服务器上的图像预览。我使用的代码草案是:

  1. // from and destination sources
  2. $src_yt = "https://i.ytimg.com/vi/$ytcode/mqdefault.jpg"; // file on youtube
  3. $dest = $_SERVER['DOCUMENT_ROOT']."/video/$prevtype/$ytcode.jpg"; // destination
  4. /* Add notice for success/failure */
  5. if( !copy( $src_yt, $dest ) ) {
  6. echo "ALT! failed to copy $src_yt...\n";
  7. }
  8. else {
  9. echo "OK! success to copy $src_yt...\n";
  10. }

字符串

相关问题