From b5aa60c13f78facd40f73c6495dbc848d1db74db Mon Sep 17 00:00:00 2001 From: A Arif A S Date: Wed, 8 Nov 2023 21:23:27 +0700 Subject: [PATCH] feat: support all platforms with video_player_media_kit --- demos/video_player/README.md | 2 - demos/video_player/app/lib/main.dart | 26 ++- demos/video_player/app/pubspec.lock | 302 +++++++++++++++++++++++++-- demos/video_player/app/pubspec.yaml | 7 + 4 files changed, 310 insertions(+), 27 deletions(-) diff --git a/demos/video_player/README.md b/demos/video_player/README.md index 0d09b45..29cfa4d 100644 --- a/demos/video_player/README.md +++ b/demos/video_player/README.md @@ -6,8 +6,6 @@ This demo shows how to use Flutter's video_player plugin to play videos in WebF ## How to use -> This demo only works on Android/iOS devices. - Flutter version requirement: flutter 3.10.0 1. Make sure your devices are in the same WIFI network with your computer. diff --git a/demos/video_player/app/lib/main.dart b/demos/video_player/app/lib/main.dart index 0087d79..7d38b23 100644 --- a/demos/video_player/app/lib/main.dart +++ b/demos/video_player/app/lib/main.dart @@ -7,12 +7,22 @@ /// An example of using the plugin, controlling lifecycle and playback of the /// video. +import 'dart:io'; + import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:video_player/video_player.dart'; +import 'package:video_player_media_kit/video_player_media_kit.dart'; import 'package:webf/webf.dart'; void main() { + VideoPlayerMediaKit.ensureInitialized( + android: Platform.isAndroid, + iOS: Platform.isIOS, + macOS: Platform.isMacOS, + windows: Platform.isWindows, + linux: Platform.isLinux, + ); + WebF.defineCustomElement( 'video-player', (context) => VideoPlayerElement(context)); @@ -219,7 +229,8 @@ class _WebFRemoteVideo extends StatefulWidget { State createState() => _WebFRemoteVideoState(); } -class _WebFRemoteVideoState extends State<_WebFRemoteVideo> with AutomaticKeepAliveClientMixin { +class _WebFRemoteVideoState extends State<_WebFRemoteVideo> + with AutomaticKeepAliveClientMixin { @override bool get wantKeepAlive => true; @@ -234,7 +245,8 @@ class _WebFRemoteVideoState extends State<_WebFRemoteVideo> with AutomaticKeepAl } } -class _BumbleBeeRemoteVideoState extends State<_BumbleBeeRemoteVideo> with AutomaticKeepAliveClientMixin { +class _BumbleBeeRemoteVideoState extends State<_BumbleBeeRemoteVideo> + with AutomaticKeepAliveClientMixin { late VideoPlayerController _controller; Future _loadCaptions() async { @@ -521,9 +533,11 @@ class VideoPlayerElement extends WidgetElement { @override void initializeProperties(Map properties) { super.initializeProperties(properties); - properties['src'] = BindingObjectProperty(getter: () => getAttribute('src'), setter: (src) { - setAttribute('src', src); - }); + properties['src'] = BindingObjectProperty( + getter: () => getAttribute('src'), + setter: (src) { + setAttribute('src', src); + }); } @override diff --git a/demos/video_player/app/pubspec.lock b/demos/video_player/app/pubspec.lock index a86b9cc..76b30f4 100644 --- a/demos/video_player/app/pubspec.lock +++ b/demos/video_player/app/pubspec.lock @@ -9,6 +9,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.2" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" async: dependency: transitive description: @@ -69,10 +77,10 @@ packages: dependency: transitive description: name: csslib - sha256: b36c7f7e24c0bdf1bf9a3da461c837d1de64b9f8beb190c9011d8c72a3dfd745 + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" url: "https://pub.dev" source: hosted - version: "0.17.2" + version: "1.0.0" cupertino_icons: dependency: "direct main" description: @@ -81,6 +89,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + dbus: + dependency: transitive + description: + name: dbus + sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + url: "https://pub.dev" + source: hosted + version: "0.7.8" fake_async: dependency: transitive description: @@ -140,10 +156,34 @@ packages: dependency: transitive description: name: html - sha256: d9793e10dbe0e6c364f4c59bf3e01fb33a9b2a674bc7a1081693dba0614b6269 + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" url: "https://pub.dev" source: hosted - version: "0.15.1" + version: "0.15.4" + http: + dependency: transitive + description: + name: http + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + image: + dependency: transitive + description: + name: image + sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" + url: "https://pub.dev" + source: hosted + version: "4.1.3" intl: dependency: transitive description: @@ -184,6 +224,70 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.0" + media_kit: + dependency: transitive + description: + name: media_kit + sha256: "3289062540e3b8b9746e5c50d95bd78a9289826b7227e253dff806d002b9e67a" + url: "https://pub.dev" + source: hosted + version: "1.1.10+1" + media_kit_libs_android_video: + dependency: "direct main" + description: + name: media_kit_libs_android_video + sha256: "9dd8012572e4aff47516e55f2597998f0a378e3d588d0fad0ca1f11a53ae090c" + url: "https://pub.dev" + source: hosted + version: "1.3.6" + media_kit_libs_ios_video: + dependency: "direct main" + description: + name: media_kit_libs_ios_video + sha256: b5382994eb37a4564c368386c154ad70ba0cc78dacdd3fb0cd9f30db6d837991 + url: "https://pub.dev" + source: hosted + version: "1.1.4" + media_kit_libs_linux: + dependency: "direct main" + description: + name: media_kit_libs_linux + sha256: e186891c31daa6bedab4d74dcdb4e8adfccc7d786bfed6ad81fe24a3b3010310 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + media_kit_libs_macos_video: + dependency: "direct main" + description: + name: media_kit_libs_macos_video + sha256: f26aa1452b665df288e360393758f84b911f70ffb3878032e1aabba23aa1032d + url: "https://pub.dev" + source: hosted + version: "1.1.4" + media_kit_libs_windows_video: + dependency: "direct main" + description: + name: media_kit_libs_windows_video + sha256: "7bace5f35d9afcc7f9b5cdadb7541d2191a66bb3fc71bfa11c1395b3360f6122" + url: "https://pub.dev" + source: hosted + version: "1.0.9" + media_kit_native_event_loop: + dependency: transitive + description: + name: media_kit_native_event_loop + sha256: a605cf185499d14d58935b8784955a92a4bf0ff4e19a23de3d17a9106303930e + url: "https://pub.dev" + source: hosted + version: "1.0.8" + media_kit_video: + dependency: transitive + description: + name: media_kit_video + sha256: c048d11a19e379aebbe810647636e3fc6d18374637e2ae12def4ff8a4b99a882 + url: "https://pub.dev" + source: hosted + version: "1.2.4" meta: dependency: transitive description: @@ -192,6 +296,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" + url: "https://pub.dev" + source: hosted + version: "4.2.0" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + url: "https://pub.dev" + source: hosted + version: "2.0.1" path: dependency: transitive description: @@ -220,10 +340,18 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d" + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.7" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" + source: hosted + version: "5.4.0" platform: dependency: transitive description: @@ -264,6 +392,62 @@ packages: url: "https://pub.dev" source: hosted version: "3.2.1" + safe_local_storage: + dependency: transitive + description: + name: safe_local_storage + sha256: ede4eb6cb7d88a116b3d3bf1df70790b9e2038bc37cb19112e381217c74d9440 + url: "https://pub.dev" + source: hosted + version: "1.0.2" + screen_brightness: + dependency: transitive + description: + name: screen_brightness + sha256: ed8da4a4511e79422fc1aa88138e920e4008cd312b72cdaa15ccb426c0faaedd + url: "https://pub.dev" + source: hosted + version: "0.2.2+1" + screen_brightness_android: + dependency: transitive + description: + name: screen_brightness_android + sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf" + url: "https://pub.dev" + source: hosted + version: "0.1.0+2" + screen_brightness_ios: + dependency: transitive + description: + name: screen_brightness_ios + sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2" + url: "https://pub.dev" + source: hosted + version: "0.1.0" + screen_brightness_macos: + dependency: transitive + description: + name: screen_brightness_macos + sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd" + url: "https://pub.dev" + source: hosted + version: "0.1.0+1" + screen_brightness_platform_interface: + dependency: transitive + description: + name: screen_brightness_platform_interface + sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171 + url: "https://pub.dev" + source: hosted + version: "0.1.0" + screen_brightness_windows: + dependency: transitive + description: + name: screen_brightness_windows + sha256: "9261bf33d0fc2707d8cf16339ce25768100a65e70af0fcabaf032fc12408ba86" + url: "https://pub.dev" + source: hosted + version: "0.1.3" shared_preferences: dependency: transitive description: @@ -333,6 +517,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" stack_trace: dependency: transitive description: @@ -357,6 +549,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" + url: "https://pub.dev" + source: hosted + version: "3.1.0" term_glyph: dependency: transitive description: @@ -381,6 +581,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.1" + universal_platform: + dependency: transitive + description: + name: universal_platform + sha256: d315be0f6641898b280ffa34e2ddb14f3d12b1a37882557869646e0cc363d0cc + url: "https://pub.dev" + source: hosted + version: "1.0.0+1" + uri_parser: + dependency: transitive + description: + name: uri_parser + sha256: "6543c9fd86d2862fac55d800a43e67c0dcd1a41677cb69c2f8edfe73bbcf1835" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + uuid: + dependency: transitive + description: + name: uuid + sha256: df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921 + url: "https://pub.dev" + source: hosted + version: "4.2.1" vector_math: dependency: transitive description: @@ -393,42 +617,74 @@ packages: dependency: "direct main" description: name: video_player - sha256: "6cec15c21974282994577ffcfb5b42e64a699d38583138ec8dcb3d0a6902a41c" + sha256: "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e" url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "2.7.2" video_player_android: dependency: transitive description: name: video_player_android - sha256: "0fc42778d794465f12456ccdade3e729e4339c8a112f9e58d170dc00f17b75f2" + sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55" url: "https://pub.dev" source: hosted - version: "2.3.11" + version: "2.4.10" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "5df5411ff9d316f1dcbfee284e9838aa686e314f2a722b15c02cb7ce40ef9446" + sha256: bf1a1322bf68bccd349982ba1f5a41314a3880861fb9a93d25d6d0a2345845f0 + url: "https://pub.dev" + source: hosted + version: "2.4.11" + video_player_media_kit: + dependency: "direct main" + description: + name: video_player_media_kit + sha256: "96c6956626ae47e17d84c66795fcebadd524556d97f070af42758cb4cfc2d67f" url: "https://pub.dev" source: hosted - version: "2.3.9" + version: "1.0.4" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "72ba04ad0eff76123c6d782ac46621cb8be476a89c33c89173fce982b6ec049b" + sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a url: "https://pub.dev" source: hosted - version: "6.0.2" + version: "6.2.1" video_player_web: dependency: transitive description: name: video_player_web - sha256: d635bb2834f2b14cfd52c7fc9307a95dffbe768d116dd6047a4ecbba203289c8 + sha256: "9c34a243785feca23148bfcd772dbb803d63c9304488177ec4f3f4463802fcb7" + url: "https://pub.dev" + source: hosted + version: "2.0.17" + volume_controller: + dependency: transitive + description: + name: volume_controller + sha256: "189bdc7a554f476b412e4c8b2f474562b09d74bc458c23667356bce3ca1d48c9" + url: "https://pub.dev" + source: hosted + version: "2.0.7" + wakelock_plus: + dependency: transitive + description: + name: wakelock_plus + sha256: f45a6c03aa3f8322e0a9d7f4a0482721c8789cb41d555407367650b8f9c26018 url: "https://pub.dev" source: hosted - version: "2.0.14" + version: "1.1.3" + wakelock_plus_platform_interface: + dependency: transitive + description: + name: wakelock_plus_platform_interface + sha256: "40fabed5da06caff0796dc638e1f07ee395fb18801fbff3255a2372db2d80385" + url: "https://pub.dev" + source: hosted + version: "1.1.0" web_socket_channel: dependency: transitive description: @@ -449,10 +705,10 @@ packages: dependency: transitive description: name: win32 - sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + sha256: "7dacfda1edcca378031db9905ad7d7bd56b29fd1a90b0908b71a52a12c41e36b" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "5.0.3" xdg_directories: dependency: transitive description: @@ -461,6 +717,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.0" + xml: + dependency: transitive + description: + name: xml + sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" + url: "https://pub.dev" + source: hosted + version: "6.3.0" sdks: - dart: ">=3.0.0-0 <4.0.0" + dart: ">=3.0.0 <4.0.0" flutter: ">=3.10.0" diff --git a/demos/video_player/app/pubspec.yaml b/demos/video_player/app/pubspec.yaml index 7407ff3..7101689 100644 --- a/demos/video_player/app/pubspec.yaml +++ b/demos/video_player/app/pubspec.yaml @@ -37,6 +37,13 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 + video_player_media_kit: ^1.0.4 + + media_kit_libs_android_video: any + media_kit_libs_ios_video: any + media_kit_libs_macos_video: any + media_kit_libs_windows_video: any + media_kit_libs_linux: any dev_dependencies: flutter_test: