Flutter 在单个视频播放器中查看Youtube视频和普通视频的任何包或方式
我在一个页面上播放两个链接的视频,它们是:Flutter 在单个视频播放器中查看Youtube视频和普通视频的任何包或方式,flutter,video-player,Flutter,Video Player,我在一个页面上播放两个链接的视频,它们是: Youtube网址 普通视频URL,如Vimeo等 我使用了这个著名的颤振软件包,也就是说,还使用了一个非常有用的软件包,它将视频播放器与所有内置控件包装在一起 现在,上面的一个能够运行正常的视频,而不是来自Youtube。对于Youtube视频,可以使用以下软件包:和 但是这里的挑战是,找到一种解决方法,既可以播放来自普通视频URL的视频,也可以播放来自YOUTUBE URL的视频,而不会出现任何问题。 我正在寻找出路,但在那之前什么也没找到。我
- Youtube网址
- 普通视频URL,如Vimeo等
String convertUrlToId(String url, {bool trimWhitespaces = true}) {
assert(url?.isNotEmpty ?? false, 'Url cannot be empty');
String _url;
if (!url.contains('http') && (url.length == 11)) return url;
if (trimWhitespaces) {
_url = url.trim();
} else {
_url = url;
}
for (final 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}).*$')
]) {
final Match match = exp.firstMatch(_url);
if (match != null && match.groupCount >= 1) return match.group(1);
}
return null;
}
我可以在两个商店(app store和play store)都有的应用程序中使用youtube_explode_dart库吗?我不知道这是否有任何法律问题。
Future<String> _extractVideoUrl() async {
if (%%IS_VIDEO_FROM_YOUTUBE%%) {
final extractor = YoutubeExplode();
final videoId = convertUrlToId(widget.videoUrl);
final streamManifest = await extractor.videos.streamsClient.getManifest(videoId);
final streamInfo = streamManifest.muxed.withHighestBitrate();
extractor.close();
return streamInfo.url.toString();
}
return null;
}
_videoPlayerController = VideoPlayerController.network(%%URL_EXTRACTED%%)..initialize();