Explorar el Código

Create widget to test if media_kit is working

ashilkn hace 1 año
padre
commit
1578e95bc6

+ 2 - 0
lib/main.dart

@@ -9,6 +9,7 @@ import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import "package:flutter/rendering.dart";
 import "package:flutter/rendering.dart";
 import 'package:logging/logging.dart';
 import 'package:logging/logging.dart';
+import "package:media_kit/media_kit.dart";
 import 'package:path_provider/path_provider.dart';
 import 'package:path_provider/path_provider.dart';
 import 'package:photos/app.dart';
 import 'package:photos/app.dart';
 import 'package:photos/core/configuration.dart';
 import 'package:photos/core/configuration.dart';
@@ -61,6 +62,7 @@ const kBackgroundLockLatency = Duration(seconds: 3);
 void main() async {
 void main() async {
   debugRepaintRainbowEnabled = false;
   debugRepaintRainbowEnabled = false;
   WidgetsFlutterBinding.ensureInitialized();
   WidgetsFlutterBinding.ensureInitialized();
+  MediaKit.ensureInitialized();
   final savedThemeMode = await AdaptiveTheme.getThemeMode();
   final savedThemeMode = await AdaptiveTheme.getThemeMode();
   await _runInForeground(savedThemeMode);
   await _runInForeground(savedThemeMode);
   BackgroundFetch.registerHeadlessTask(_headlessTaskHandler);
   BackgroundFetch.registerHeadlessTask(_headlessTaskHandler);

+ 8 - 7
lib/ui/viewer/file/file_widget.dart

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
 import 'package:logging/logging.dart';
 import 'package:photos/models/file/file.dart';
 import 'package:photos/models/file/file.dart';
 import 'package:photos/models/file/file_type.dart';
 import 'package:photos/models/file/file_type.dart';
-import 'package:photos/ui/viewer/file/video_widget.dart';
+import "package:photos/ui/viewer/file/video_widget_new.dart";
 import 'package:photos/ui/viewer/file/zoomable_live_image.dart';
 import 'package:photos/ui/viewer/file/zoomable_live_image.dart';
 
 
 class FileWidget extends StatelessWidget {
 class FileWidget extends StatelessWidget {
@@ -34,12 +34,13 @@ class FileWidget extends StatelessWidget {
         backgroundDecoration: backgroundDecoration,
         backgroundDecoration: backgroundDecoration,
       );
       );
     } else if (file.fileType == FileType.video) {
     } else if (file.fileType == FileType.video) {
-      return VideoWidget(
-        file,
-        autoPlay: autoPlay ?? false, // Autoplay if it was opened directly
-        tagPrefix: tagPrefix,
-        playbackCallback: playbackCallback,
-      );
+      // return VideoWidget(
+      //   file,
+      //   autoPlay: autoPlay ?? false, // Autoplay if it was opened directly
+      //   tagPrefix: tagPrefix,
+      //   playbackCallback: playbackCallback,
+      // );
+      return const VideoWidgetNew();
     } else {
     } else {
       Logger('FileWidget').severe('unsupported file type ${file.fileType}');
       Logger('FileWidget').severe('unsupported file type ${file.fileType}');
       return const Icon(Icons.error);
       return const Icon(Icons.error);

+ 0 - 1
lib/ui/viewer/file/thumbnail_widget.dart

@@ -1,7 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
 import 'package:logging/logging.dart';
 import 'package:photos/core/cache/thumbnail_in_memory_cache.dart';
 import 'package:photos/core/cache/thumbnail_in_memory_cache.dart';
-import 'package:photos/core/configuration.dart';
 import 'package:photos/core/constants.dart';
 import 'package:photos/core/constants.dart';
 import 'package:photos/core/errors.dart';
 import 'package:photos/core/errors.dart';
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/core/event_bus.dart';

+ 46 - 0
lib/ui/viewer/file/video_widget_new.dart

@@ -0,0 +1,46 @@
+import "package:flutter/material.dart";
+import "package:media_kit/media_kit.dart";
+import "package:media_kit_video/media_kit_video.dart";
+
+class VideoWidgetNew extends StatefulWidget {
+  const VideoWidgetNew({super.key});
+
+  @override
+  State<VideoWidgetNew> createState() => _VideoWidgetNewState();
+}
+
+class _VideoWidgetNewState extends State<VideoWidgetNew> {
+  // Create a [Player] to control playback.
+  late final player = Player();
+  // Create a [VideoController] to handle video output from [Player].
+  late final controller = VideoController(player);
+
+  @override
+  void initState() {
+    super.initState();
+    // Play a [Media] or [Playlist].
+    player.open(
+      Media(
+        'https://user-images.githubusercontent.com/28951144/229373695-22f88f13-d18f-4288-9bf1-c3e078d83722.mp4',
+      ),
+    );
+  }
+
+  @override
+  void dispose() {
+    player.dispose();
+    super.dispose();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Center(
+      child: SizedBox(
+        width: MediaQuery.of(context).size.width,
+        height: MediaQuery.of(context).size.width * 9.0 / 16.0,
+        // Use [Video] widget to display video output.
+        child: Video(controller: controller),
+      ),
+    );
+  }
+}