我正在使用 youtube_player_flutter 在我的应用中播放 youtube 视频。有什么方法可以在颤动中获取 youtube 视频的缩略图。我有一个 youtube 视频网址,我需要获取该网址的缩略图。
提前致谢。
jit*_*555 15
假设您有上传视频的 youtube URL。如果你有它,那么你必须像下面的 URL 一样格式化它。
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg -- Just add your youtube video Id here
Run Code Online (Sandbox Code Playgroud)
代码片段:
Image.network('https://img.youtube.com/vi/6cwnBBAVIwE/0.jpg'),
Run Code Online (Sandbox Code Playgroud)
6cwnBBAVIwE
- 这是我在此处添加的示例 ID。您可以添加您的 YouTube 视频 ID。
您可以从视频 url 中获取 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);
Run Code Online (Sandbox Code Playgroud)
或者
如果上述解决方案不起作用,则使用更高级的方法来解决它。
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;
}
Run Code Online (Sandbox Code Playgroud)
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';
Run Code Online (Sandbox Code Playgroud)
用法:
void main() {
String? videoId = convertUrlToId(
"https://www.youtube.com/watch?v=6cwnBBAVIwE");
String thumbnailUrl = getThumbnail(videoId: videoId ?? "");
print(thumbnailUrl);
}
Run Code Online (Sandbox Code Playgroud)
输出:
https://i3.ytimg.com/vi_webp/6cwnBBAVIwE/sddefault.webp
// 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';
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3551 次 |
最近记录: |