Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 获取Youtube视频的缩略图_Flutter_Dart - Fatal编程技术网

Flutter 获取Youtube视频的缩略图

Flutter 获取Youtube视频的缩略图,flutter,dart,Flutter,Dart,我正在使用youtube_player_Flight在我的应用程序中播放youtube视频。有没有办法在flutter中获取youtube视频的缩略图。我有一个youtube视频URL,我需要得到该URL的缩略图 提前感谢。假设您有上传视频的youtube URL。如果你有它,那么你必须像下面的URL一样格式化它 https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg -- Just add your you

我正在使用youtube_player_Flight在我的应用程序中播放youtube视频。有没有办法在flutter中获取youtube视频的缩略图。我有一个youtube视频URL,我需要得到该URL的缩略图


提前感谢。

假设您有上传视频的youtube URL。如果你有它,那么你必须像下面的URL一样格式化它

https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg  --  Just add your youtube video Id here
6cwnBBAVIwE
-这是我在这里添加的示例id。您可以添加您的youtube视频id

您可以从视频url获取youtube id,该id是youtube id的最后11位数字

例如,这里的视频url是

此视频的id是
6cwnBBAVIwE

要获取id,请执行以下操作:

String url = "https://www.youtube.com/watch?v=H4p6njjPV_o"
String id = url.substring(url.length -11);

如果上述解决方案不起作用,则采用更高级的方法解决

1。从URL获取ID

  String? convertUrlToId(String url, {bool trimWhitespaces = true}) {
  if (!url.contains("http") && (url.length == 11)) return url;
  if (trimWhitespaces) url = url.trim();

  for (var exp in [
    RegExp(
        r"^https:\/\/(?:www\.|m\.)?youtube\.com\/watch\?v=([_\-a-zA-Z0-9]{11}).*$"),
    RegExp(
        r"^https:\/\/(?:www\.|m\.)?youtube(?:-nocookie)?\.com\/embed\/([_\-a-zA-Z0-9]{11}).*$"),
    RegExp(r"^https:\/\/youtu\.be\/([_\-a-zA-Z0-9]{11}).*$")
  ]) {
    Match? match = exp.firstMatch(url);
    if (match != null && match.groupCount >= 1) return match.group(1);
  }

  return null;
}
String getThumbnail({
  required String videoId,
  String quality = ThumbnailQuality.standard,
  bool webp = true,
}) =>
    webp
        ? 'https://i3.ytimg.com/vi_webp/$videoId/$quality.webp'
        : 'https://i3.ytimg.com/vi/$videoId/$quality.jpg';
2。获取缩略图URL

  String? convertUrlToId(String url, {bool trimWhitespaces = true}) {
  if (!url.contains("http") && (url.length == 11)) return url;
  if (trimWhitespaces) url = url.trim();

  for (var exp in [
    RegExp(
        r"^https:\/\/(?:www\.|m\.)?youtube\.com\/watch\?v=([_\-a-zA-Z0-9]{11}).*$"),
    RegExp(
        r"^https:\/\/(?:www\.|m\.)?youtube(?:-nocookie)?\.com\/embed\/([_\-a-zA-Z0-9]{11}).*$"),
    RegExp(r"^https:\/\/youtu\.be\/([_\-a-zA-Z0-9]{11}).*$")
  ]) {
    Match? match = exp.firstMatch(url);
    if (match != null && match.groupCount >= 1) return match.group(1);
  }

  return null;
}
String getThumbnail({
  required String videoId,
  String quality = ThumbnailQuality.standard,
  bool webp = true,
}) =>
    webp
        ? 'https://i3.ytimg.com/vi_webp/$videoId/$quality.webp'
        : 'https://i3.ytimg.com/vi/$videoId/$quality.jpg';

用法:

Image.network('https://img.youtube.com/vi/6cwnBBAVIwE/0.jpg'),
void main() {
  String? videoId = convertUrlToId(
      "https://www.youtube.com/watch?v=6cwnBBAVIwE");
  String thumbnailUrl = getThumbnail(videoId: videoId ?? "");
  print(thumbnailUrl); 
}
输出:

Image.network('https://img.youtube.com/vi/6cwnBBAVIwE/0.jpg'),
void main() {
  String? videoId = convertUrlToId(
      "https://www.youtube.com/watch?v=6cwnBBAVIwE");
  String thumbnailUrl = getThumbnail(videoId: videoId ?? "");
  print(thumbnailUrl); 
}

//由创建的文件
//拉兹万
//2021年1月20日
void main(){
最终字符串缩略图=getYoutubeThumbnail('https://www.youtube.com/watch?v=ISPK_eWX3ls');
打印(缩略图);
}
字符串getYoutubeThumbnail(字符串videoUrl){
最终Uri=Uri.tryParse(videoUrl);
if(uri==null){
返回null;
}
返回'https://img.youtube.com/vi/${uri.queryParameters['v']}/0.jpg';
}

您可以看到希望它能帮助您!1.它们不是数字2。为什么是子串?如果将来长度发生变化怎么办?您可以使用Uri.parse('url')。queryParams['v']这是如何使用Uri.parse('url')。queryParams['v']?这是一个可行的解决方案,但不是一个好的解决方案。再说一次,未来的长度变化是什么?如果最后的播放列表也是这样的
https://www.youtube.com/watch?v=ZmDBbnmKpqQ&list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU
那你怎么办?