【发布时间】:2020-08-27 19:26:25
【问题描述】:
我正在使用 youtube_player_flutter 在我的应用中播放 youtube 视频。有什么方法可以让 youtube 视频的缩略图颤抖。我有一个 youtube 视频 URL,我需要获取该 URL 的缩略图。
提前致谢。
【问题讨论】:
-
可以看this post希望对你有帮助!
我正在使用 youtube_player_flutter 在我的应用中播放 youtube 视频。有什么方法可以让 youtube 视频的缩略图颤抖。我有一个 youtube 视频 URL,我需要获取该 URL 的缩略图。
提前致谢。
【问题讨论】:
假设您有上传视频的 youtube 网址。如果你有它,那么你必须像下面的 URL 那样格式化它。
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg -- Just add your youtube video Id here
代码片段:
Image.network('https://img.youtube.com/vi/6cwnBBAVIwE/0.jpg'),
6cwnBBAVIwE- 这是我在此处添加的示例 ID。您可以添加您的 youtube 视频 ID。
您可以从视频网址中获取 youtube id,id 是 youtube id 的最后 11 位数字
例如这里的视频网址是https://www.youtube.com/watch?v=6cwnBBAVIwE
这个视频的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;
}
2。获取缩略图网址
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';
用法:
void main() {
String? videoId = convertUrlToId(
"https://www.youtube.com/watch?v=6cwnBBAVIwE");
String thumbnailUrl = getThumbnail(videoId: videoId ?? "");
print(thumbnailUrl);
}
输出:
【讨论】:
https://www.youtube.com/watch?v=ZmDBbnmKpqQ&list=RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU那你怎么办?
/0 替换为 /mqdefault
// File created by
// Lung Razvan <long1eu>
// on 20/01/2021
void main() {
final String thumbnail = getYoutubeThumbnail('https://www.youtube.com/watch?v=ISPK_eWX3ls');
print(thumbnail);
}
String getYoutubeThumbnail(String videoUrl) {
final Uri uri = Uri.tryParse(videoUrl);
if (uri == null) {
return null;
}
return 'https://img.youtube.com/vi/${uri.queryParameters['v']}/0.jpg';
}
【讨论】: