diff --git a/lib/widgets/attachments/attachment_item.dart b/lib/widgets/attachments/attachment_item.dart index dba9392..58054c5 100644 --- a/lib/widgets/attachments/attachment_item.dart +++ b/lib/widgets/attachments/attachment_item.dart @@ -1,20 +1,19 @@ import 'dart:math'; import 'package:cached_network_image/cached_network_image.dart'; -import 'package:chewie/chewie.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:gap/gap.dart'; import 'package:get/get.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:just_audio/just_audio.dart'; +import 'package:media_kit/media_kit.dart'; +import 'package:media_kit_video/media_kit_video.dart'; import 'package:solian/models/attachment.dart'; import 'package:solian/platform.dart'; import 'package:solian/providers/durations.dart'; import 'package:solian/services.dart'; import 'package:solian/widgets/sized_container.dart'; import 'package:url_launcher/url_launcher_string.dart'; -import 'package:video_player/video_player.dart'; class AttachmentItem extends StatefulWidget { final String parentId; @@ -252,19 +251,19 @@ class _AttachmentItemVideo extends StatefulWidget { class _AttachmentItemVideoState extends State<_AttachmentItemVideo> { bool _showContent = false; - VideoPlayerController? _videoController; - ChewieController? _chewieController; + Player? _videoPlayer; + VideoController? _videoController; Future _startLoad() async { setState(() => _showContent = true); - final url = - ServiceFinder.buildUrl('files', '/attachments/${widget.item.rid}'); - _videoController = VideoPlayerController.networkUrl(Uri.parse(url)); - await _videoController!.initialize(); - _chewieController = ChewieController( - videoPlayerController: _videoController!, - aspectRatio: widget.item.metadata?['ratio'], + MediaKit.ensureInitialized(); + final url = ServiceFinder.buildUrl( + 'files', + '/attachments/${widget.item.rid}', ); + _videoPlayer = Player(); + _videoController = VideoController(_videoPlayer!); + _videoPlayer!.open(Media(url), play: !widget.autoload); } @override @@ -314,19 +313,21 @@ class _AttachmentItemVideoState extends State<_AttachmentItemVideo> { _startLoad(); }, ); - } else if (_chewieController == null) { + } else if (_videoController == null) { return const Center( child: CircularProgressIndicator(), ); } - return Chewie(controller: _chewieController!); + return Video( + controller: _videoController!, + aspectRatio: ratio, + ); } @override void dispose() { - _chewieController?.dispose(); - _videoController?.dispose(); + _videoPlayer?.dispose(); super.dispose(); } } @@ -348,26 +349,28 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { bool _showContent = false; double? _draggingValue; + bool _isPlaying = false; + Duration _duration = Duration.zero; + Duration _position = Duration.zero; + Duration _bufferedPosition = Duration.zero; - AudioPlayer? _audioController; + Player? _audioPlayer; Future _startLoad() async { setState(() => _showContent = true); - final url = - ServiceFinder.buildUrl('files', '/attachments/${widget.item.rid}'); - _audioController = AudioPlayer(); - // Platform that can cache image also capable to cache audio - // https://pub.dev/packages/just_audio#experimental-features - if (PlatformInfo.canCacheImage) { - final source = LockCachingAudioSource(Uri.parse(url)); - await _audioController!.setAudioSource(source); - } else { - await _audioController!.setUrl(url); - } - _audioController!.playingStream.listen((_) => setState(() {})); - _audioController!.positionStream.listen((_) => setState(() {})); - _audioController!.durationStream.listen((_) => setState(() {})); - _audioController!.bufferedPositionStream.listen((_) => setState(() {})); + MediaKit.ensureInitialized(); + final url = ServiceFinder.buildUrl( + 'files', + '/attachments/${widget.item.rid}', + ); + _audioPlayer = Player(); + await _audioPlayer!.open(Media(url), play: !widget.autoload); + _audioPlayer!.stream.playing.listen((v) => setState(() => _isPlaying = v)); + _audioPlayer!.stream.position.listen((v) => setState(() => _position = v)); + _audioPlayer!.stream.duration.listen((v) => setState(() => _duration = v)); + _audioPlayer!.stream.buffer.listen( + (v) => setState(() => _bufferedPosition = v), + ); } @override @@ -417,7 +420,7 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { _startLoad(); }, ); - } else if (_audioController == null) { + } else if (_audioPlayer == null) { return const Center( child: CircularProgressIndicator(), ); @@ -453,30 +456,23 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { overlayShape: SliderComponentShape.noOverlay, ), child: Slider( - secondaryTrackValue: _audioController! - .bufferedPosition.inMilliseconds - .abs() - .toDouble(), + secondaryTrackValue: + _bufferedPosition.inMilliseconds.abs().toDouble(), value: _draggingValue?.abs() ?? - _audioController!.position.inMilliseconds - .toDouble() - .abs(), + _position.inMilliseconds.toDouble().abs(), min: 0, max: max( - _audioController!.bufferedPosition.inMilliseconds - .abs(), + _bufferedPosition.inMilliseconds.abs(), max( - _audioController!.position.inMilliseconds.abs(), - _audioController!.duration?.inMilliseconds - .abs() ?? - 1, + _position.inMilliseconds.abs(), + _duration.inMilliseconds.abs(), ), ).toDouble(), onChanged: (value) { setState(() => _draggingValue = value); }, onChangeEnd: (value) { - _audioController! + _audioPlayer! .seek(Duration(milliseconds: value.toInt())); setState(() => _draggingValue = null); }, @@ -486,13 +482,11 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - _audioController!.position.toHumanReadableString(), + _position.toHumanReadableString(), style: GoogleFonts.robotoMono(fontSize: 12), ), Text( - _audioController!.duration - ?.toHumanReadableString() ?? - '00:00', + _duration.toHumanReadableString(), style: GoogleFonts.robotoMono(fontSize: 12), ), ], @@ -502,15 +496,11 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { ), const Gap(16), IconButton.filled( - icon: _audioController!.playing + icon: _isPlaying ? const Icon(Icons.pause) : const Icon(Icons.play_arrow), onPressed: () { - if (_audioController!.playing) { - _audioController!.pause(); - } else { - _audioController!.play(); - } + _audioPlayer!.playOrPause(); }, visualDensity: const VisualDensity( horizontal: -4, @@ -527,7 +517,7 @@ class _AttachmentItemAudioState extends State<_AttachmentItemAudio> { @override void dispose() { - _audioController?.dispose(); + _audioPlayer?.dispose(); super.dispose(); } } diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 77535f1..63960ac 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include #include @@ -30,6 +32,12 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); + g_autoptr(FlPluginRegistrar) media_kit_libs_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitLibsLinuxPlugin"); + media_kit_libs_linux_plugin_register_with_registrar(media_kit_libs_linux_registrar); + g_autoptr(FlPluginRegistrar) media_kit_video_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "MediaKitVideoPlugin"); + media_kit_video_plugin_register_with_registrar(media_kit_video_registrar); g_autoptr(FlPluginRegistrar) pasteboard_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "PasteboardPlugin"); pasteboard_plugin_register_with_registrar(pasteboard_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 9073a89..5705c88 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -8,11 +8,14 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_acrylic flutter_secure_storage_linux flutter_webrtc + media_kit_libs_linux + media_kit_video pasteboard url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + media_kit_native_event_loop ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index dab897c..34686c2 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,7 +5,6 @@ import FlutterMacOS import Foundation -import audio_session import connectivity_plus import desktop_drop import device_info_plus @@ -17,22 +16,22 @@ import firebase_messaging import flutter_secure_storage_macos import flutter_webrtc import gal -import just_audio import livekit_client import macos_window_utils +import media_kit_libs_macos_video +import media_kit_video import package_info_plus import pasteboard import path_provider_foundation import protocol_handler_macos +import screen_brightness_macos import share_plus import shared_preferences_foundation import sqflite import url_launcher_macos -import video_player_avfoundation import wakelock_plus func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin")) DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) @@ -44,17 +43,18 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) GalPlugin.register(with: registry.registrar(forPlugin: "GalPlugin")) - JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) LiveKitPlugin.register(with: registry.registrar(forPlugin: "LiveKitPlugin")) MacOSWindowUtilsPlugin.register(with: registry.registrar(forPlugin: "MacOSWindowUtilsPlugin")) + MediaKitLibsMacosVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitLibsMacosVideoPlugin")) + MediaKitVideoPlugin.register(with: registry.registrar(forPlugin: "MediaKitVideoPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PasteboardPlugin.register(with: registry.registrar(forPlugin: "PasteboardPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) ProtocolHandlerMacosPlugin.register(with: registry.registrar(forPlugin: "ProtocolHandlerMacosPlugin")) + ScreenBrightnessMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenBrightnessMacosPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) - FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin")) } diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 50dd3f1..9cc1f00 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -1,6 +1,4 @@ PODS: - - audio_session (0.0.1): - - FlutterMacOS - connectivity_plus (0.0.1): - Flutter - FlutterMacOS @@ -158,13 +156,17 @@ PODS: - GoogleUtilities/UserDefaults (8.0.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - just_audio (0.0.1): - - FlutterMacOS - livekit_client (2.2.4): - FlutterMacOS - WebRTC-SDK (= 125.6422.04) - macos_window_utils (1.0.0): - FlutterMacOS + - media_kit_libs_macos_video (1.0.4): + - FlutterMacOS + - media_kit_native_event_loop (1.0.0): + - FlutterMacOS + - media_kit_video (0.0.1): + - FlutterMacOS - nanopb (3.30910.0): - nanopb/decode (= 3.30910.0) - nanopb/encode (= 3.30910.0) @@ -182,6 +184,8 @@ PODS: - PromisesObjC (= 2.4.0) - protocol_handler_macos (0.0.1): - FlutterMacOS + - screen_brightness_macos (0.1.0): + - FlutterMacOS - share_plus (0.0.1): - FlutterMacOS - shared_preferences_foundation (0.0.1): @@ -192,15 +196,11 @@ PODS: - FlutterMacOS - url_launcher_macos (0.0.1): - FlutterMacOS - - video_player_avfoundation (0.0.1): - - Flutter - - FlutterMacOS - wakelock_plus (0.0.1): - FlutterMacOS - WebRTC-SDK (125.6422.04) DEPENDENCIES: - - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin`) - desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`) - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) @@ -213,18 +213,20 @@ DEPENDENCIES: - flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`) - - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`) - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) - macos_window_utils (from `Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos`) + - media_kit_libs_macos_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos`) + - media_kit_native_event_loop (from `Flutter/ephemeral/.symlinks/plugins/media_kit_native_event_loop/macos`) + - media_kit_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - pasteboard (from `Flutter/ephemeral/.symlinks/plugins/pasteboard/macos`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - protocol_handler_macos (from `Flutter/ephemeral/.symlinks/plugins/protocol_handler_macos/macos`) + - screen_brightness_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_brightness_macos/macos`) - share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`) - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) - wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`) SPEC REPOS: @@ -248,8 +250,6 @@ SPEC REPOS: - WebRTC-SDK EXTERNAL SOURCES: - audio_session: - :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos connectivity_plus: :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/darwin desktop_drop: @@ -274,12 +274,16 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral gal: :path: Flutter/ephemeral/.symlinks/plugins/gal/darwin - just_audio: - :path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos livekit_client: :path: Flutter/ephemeral/.symlinks/plugins/livekit_client/macos macos_window_utils: :path: Flutter/ephemeral/.symlinks/plugins/macos_window_utils/macos + media_kit_libs_macos_video: + :path: Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos + media_kit_native_event_loop: + :path: Flutter/ephemeral/.symlinks/plugins/media_kit_native_event_loop/macos + media_kit_video: + :path: Flutter/ephemeral/.symlinks/plugins/media_kit_video/macos package_info_plus: :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos pasteboard: @@ -288,6 +292,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin protocol_handler_macos: :path: Flutter/ephemeral/.symlinks/plugins/protocol_handler_macos/macos + screen_brightness_macos: + :path: Flutter/ephemeral/.symlinks/plugins/screen_brightness_macos/macos share_plus: :path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos shared_preferences_foundation: @@ -296,13 +302,10 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos - video_player_avfoundation: - :path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin wakelock_plus: :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos SPEC CHECKSUMS: - audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898 device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 @@ -328,9 +331,11 @@ SPEC CHECKSUMS: GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d - just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489 livekit_client: 95f3b71e6545845aa658a6df0a3a62dcc3471d7c macos_window_utils: 933f91f64805e2eb91a5bd057cf97cd097276663 + media_kit_libs_macos_video: b3e2bbec2eef97c285f2b1baa7963c67c753fb82 + media_kit_native_event_loop: 81fd5b45192b72f8b5b69eaf5b540f45777eb8d5 + media_kit_video: c75b07f14d59706c775778e4dd47dd027de8d1e5 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c pasteboard: 9b69dba6fedbb04866be632205d532fe2f6b1d99 @@ -338,11 +343,11 @@ SPEC CHECKSUMS: PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 protocol_handler_macos: d10a6c01d6373389ffd2278013ab4c47ed6d6daa + screen_brightness_macos: 2d6d3af2165592d9a55ffcd95b7550970e41ebda share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 - video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 WebRTC-SDK: c3d69a87e7185fad3568f6f3cff7c9ac5890acf3 diff --git a/pubspec.lock b/pubspec.lock index 132401f..828e179 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -70,14 +70,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" - audio_session: - dependency: transitive - description: - name: audio_session - sha256: "343e83bc7809fbda2591a49e525d6b63213ade10c76f15813be9aed6657b3261" - url: "https://pub.dev" - source: hosted - version: "0.1.21" avatar_stack: dependency: "direct main" description: @@ -222,14 +214,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" - chewie: - dependency: "direct main" - description: - name: chewie - sha256: "8210c6e8702ddae9b3337aad0d539a9ff128cc4a5baaadc0174edbd0f99b0125" - url: "https://pub.dev" - source: hosted - version: "1.8.4" cli_util: dependency: transitive description: @@ -414,14 +398,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.5" - eventify: - dependency: transitive - description: - name: eventify - sha256: b829429f08586cc2001c628e7499e3e3c2493a1d895fd73b00ecb23351aa5a66 - url: "https://pub.dev" - source: hosted - version: "1.0.1" fake_async: dependency: transitive description: @@ -1157,46 +1133,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.8.0" - just_audio: - dependency: "direct main" - description: - name: just_audio - sha256: d8e8aaf417d33e345299c17f6457f72bd4ba0c549dc34607abb5183a354edc4d - url: "https://pub.dev" - source: hosted - version: "0.9.40" - just_audio_mpv: - dependency: "direct main" - description: - name: just_audio_mpv - sha256: d6e4e9fd20bfb9d2fd5e3dcd7906c90ed07f83d1d2f44f31204160821ab62fed - url: "https://pub.dev" - source: hosted - version: "0.1.7" - just_audio_platform_interface: - dependency: transitive - description: - name: just_audio_platform_interface - sha256: "0243828cce503c8366cc2090cefb2b3c871aa8ed2f520670d76fd47aa1ab2790" - url: "https://pub.dev" - source: hosted - version: "4.3.0" - just_audio_web: - dependency: transitive - description: - name: just_audio_web - sha256: b163878529d9b028c53a6972fcd58cae2405bcd11cbfcea620b6fb9f151429d6 - url: "https://pub.dev" - source: hosted - version: "0.4.12" - just_audio_windows: - dependency: "direct main" - description: - name: just_audio_windows - sha256: "48ab2dec79cf6097550602fe07b1a644f341450e138dc8fdc23e42ce0ed2d928" - url: "https://pub.dev" - source: hosted - version: "0.2.1" leak_tracker: dependency: transitive description: @@ -1301,6 +1237,78 @@ packages: url: "https://pub.dev" source: hosted version: "0.11.1" + media_kit: + dependency: "direct main" + description: + name: media_kit + sha256: "1f1deee148533d75129a6f38251ff8388e33ee05fc2d20a6a80e57d6051b7b62" + url: "https://pub.dev" + source: hosted + version: "1.1.11" + media_kit_libs_android_video: + dependency: transitive + 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: transitive + description: + name: media_kit_libs_ios_video + sha256: b5382994eb37a4564c368386c154ad70ba0cc78dacdd3fb0cd9f30db6d837991 + url: "https://pub.dev" + source: hosted + version: "1.1.4" + media_kit_libs_linux: + dependency: transitive + description: + name: media_kit_libs_linux + sha256: e186891c31daa6bedab4d74dcdb4e8adfccc7d786bfed6ad81fe24a3b3010310 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + media_kit_libs_macos_video: + dependency: transitive + description: + name: media_kit_libs_macos_video + sha256: f26aa1452b665df288e360393758f84b911f70ffb3878032e1aabba23aa1032d + url: "https://pub.dev" + source: hosted + version: "1.1.4" + media_kit_libs_video: + dependency: "direct main" + description: + name: media_kit_libs_video + sha256: "20bb4aefa8fece282b59580e1cd8528117297083a6640c98c2e98cfc96b93288" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + media_kit_libs_windows_video: + dependency: transitive + description: + name: media_kit_libs_windows_video + sha256: "32654572167825c42c55466f5d08eee23ea11061c84aa91b09d0e0f69bdd0887" + url: "https://pub.dev" + source: hosted + version: "1.0.10" + media_kit_native_event_loop: + dependency: transitive + description: + name: media_kit_native_event_loop + sha256: "7d82e3b3e9ded5c35c3146c5ba1da3118d1dd8ac3435bac7f29f458181471b40" + url: "https://pub.dev" + source: hosted + version: "1.0.9" + media_kit_video: + dependency: "direct main" + description: + name: media_kit_video + sha256: "2cc3b966679963ba25a4ce5b771e532a521ebde7c6aa20e9802bec95d9916c8f" + url: "https://pub.dev" + source: hosted + version: "1.2.5" meta: dependency: transitive description: @@ -1317,14 +1325,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" - mpv_dart: - dependency: transitive - description: - name: mpv_dart - sha256: a33bd9a68439b496b7a5f36fecd3aa3cf6cbf0176ae15b9b60b12ae96e58f5a4 - url: "https://pub.dev" - source: hosted - version: "0.0.1" nested: dependency: transitive description: @@ -1661,6 +1661,62 @@ packages: url: "https://pub.dev" source: hosted version: "0.28.0" + 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" sdp_transform: dependency: transitive description: @@ -1954,6 +2010,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.2" + universal_platform: + dependency: transitive + description: + name: universal_platform + sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + uri_parser: + dependency: transitive + description: + name: uri_parser + sha256: "6543c9fd86d2862fac55d800a43e67c0dcd1a41677cb69c2f8edfe73bbcf1835" + url: "https://pub.dev" + source: hosted + version: "2.0.2" url_launcher: dependency: "direct main" description: @@ -2058,54 +2130,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - video_player: - dependency: "direct main" - description: - name: video_player - sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d - url: "https://pub.dev" - source: hosted - version: "2.9.1" - video_player_android: - dependency: transitive - description: - name: video_player_android - sha256: "38d8fe136c427abdce68b5e8c3c08ea29d7a794b453c7a51b12ecfad4aad9437" - url: "https://pub.dev" - source: hosted - version: "2.7.3" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c - url: "https://pub.dev" - source: hosted - version: "2.6.1" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" - url: "https://pub.dev" - source: hosted - version: "6.2.2" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "6dcdd298136523eaf7dfc31abaf0dfba9aa8a8dbc96670e87e9d42b6f2caf774" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - video_player_win: - dependency: "direct main" - description: - name: video_player_win - sha256: e7b92ae1050086f9be3787eba1fbecbea278b59453cb3589263daa0c62772a88 - url: "https://pub.dev" - source: hosted - version: "2.3.11" vm_service: dependency: transitive description: @@ -2114,6 +2138,14 @@ packages: url: "https://pub.dev" source: hosted version: "14.2.5" + volume_controller: + dependency: transitive + description: + name: volume_controller + sha256: c71d4c62631305df63b72da79089e078af2659649301807fa746088f365cb48e + url: "https://pub.dev" + source: hosted + version: "2.0.8" wakelock_plus: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index f2042e9..e09d9ef 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -75,12 +75,9 @@ dependencies: json_annotation: ^4.9.0 gap: ^3.0.1 fl_chart: ^0.69.0 - video_player: ^2.9.1 - video_player_win: ^2.3.11 - chewie: ^1.8.4 - just_audio: ^0.9.40 - just_audio_windows: ^0.2.1 - just_audio_mpv: ^0.1.7 + media_kit: ^1.1.11 + media_kit_video: ^1.2.5 + media_kit_libs_video: ^1.0.5 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 0a34134..a0fca33 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -14,14 +14,15 @@ #include #include #include -#include #include +#include +#include #include #include #include +#include #include #include -#include void RegisterPlugins(flutter::PluginRegistry* registry) { ConnectivityPlusWindowsPluginRegisterWithRegistrar( @@ -40,20 +41,22 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); GalPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("GalPluginCApi")); - JustAudioWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("JustAudioWindowsPlugin")); LiveKitPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("LiveKitPlugin")); + MediaKitLibsWindowsVideoPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("MediaKitLibsWindowsVideoPluginCApi")); + MediaKitVideoPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("MediaKitVideoPluginCApi")); PasteboardPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PasteboardPlugin")); PermissionHandlerWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); ProtocolHandlerWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("ProtocolHandlerWindowsPluginCApi")); + ScreenBrightnessWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenBrightnessWindowsPlugin")); SharePlusWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); - VideoPlayerWinPluginCApiRegisterWithRegistrar( - registry->GetRegistrarForPlugin("VideoPlayerWinPluginCApi")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d8ad4e4..b666aba 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -11,17 +11,19 @@ list(APPEND FLUTTER_PLUGIN_LIST flutter_secure_storage_windows flutter_webrtc gal - just_audio_windows livekit_client + media_kit_libs_windows_video + media_kit_video pasteboard permission_handler_windows protocol_handler_windows + screen_brightness_windows share_plus url_launcher_windows - video_player_win ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + media_kit_native_event_loop ) set(PLUGIN_BUNDLED_LIBRARIES)