mirror of
https://github.com/nini22P/iris.git
synced 2026-09-09 01:08:53 +08:00
104 lines
2.9 KiB
Dart
104 lines
2.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:iris/models/file.dart';
|
|
import 'package:media_kit/media_kit.dart' as media_kit;
|
|
import 'package:media_kit_video/media_kit_video.dart' as media_kit_video;
|
|
import 'package:video_player/video_player.dart';
|
|
|
|
class MediaPlayer {
|
|
final bool isInitializing;
|
|
final bool isPlaying;
|
|
final List<Subtitle> externalSubtitles;
|
|
final Duration position;
|
|
final Duration duration;
|
|
final Duration buffer;
|
|
final double width;
|
|
final double height;
|
|
final Future<void> Function() saveProgress;
|
|
final Future<void> Function() play;
|
|
final Future<void> Function() pause;
|
|
final Future<void> Function(int) backward;
|
|
final Future<void> Function(int) forward;
|
|
final Future<void> Function() stepBackward;
|
|
final Future<void> Function() stepForward;
|
|
final Future<void> Function(Duration) seek;
|
|
|
|
MediaPlayer({
|
|
required this.isInitializing,
|
|
required this.isPlaying,
|
|
required this.externalSubtitles,
|
|
required this.position,
|
|
required this.duration,
|
|
required this.buffer,
|
|
required this.width,
|
|
required this.height,
|
|
required this.saveProgress,
|
|
required this.play,
|
|
required this.pause,
|
|
required this.backward,
|
|
required this.forward,
|
|
required this.stepBackward,
|
|
required this.stepForward,
|
|
required this.seek,
|
|
});
|
|
}
|
|
|
|
class MediaKitPlayer extends MediaPlayer {
|
|
final media_kit.Player player;
|
|
final media_kit_video.VideoController controller;
|
|
final media_kit.SubtitleTrack subtitle;
|
|
final List<media_kit.SubtitleTrack> subtitles;
|
|
final media_kit.AudioTrack audio;
|
|
final List<media_kit.AudioTrack> audios;
|
|
|
|
MediaKitPlayer({
|
|
required this.player,
|
|
required this.controller,
|
|
required this.subtitle,
|
|
required this.subtitles,
|
|
required super.externalSubtitles,
|
|
required this.audio,
|
|
required this.audios,
|
|
required super.isInitializing,
|
|
required super.isPlaying,
|
|
required super.position,
|
|
required super.duration,
|
|
required super.buffer,
|
|
required super.width,
|
|
required super.height,
|
|
required super.saveProgress,
|
|
required super.play,
|
|
required super.pause,
|
|
required super.backward,
|
|
required super.forward,
|
|
required super.stepBackward,
|
|
required super.stepForward,
|
|
required super.seek,
|
|
});
|
|
}
|
|
|
|
class FvpPlayer extends MediaPlayer {
|
|
final VideoPlayerController controller;
|
|
final ValueNotifier<int?> externalSubtitle;
|
|
|
|
FvpPlayer({
|
|
required this.controller,
|
|
required super.isInitializing,
|
|
required super.isPlaying,
|
|
required this.externalSubtitle,
|
|
required super.externalSubtitles,
|
|
required super.position,
|
|
required super.duration,
|
|
required super.buffer,
|
|
required super.width,
|
|
required super.height,
|
|
required super.saveProgress,
|
|
required super.play,
|
|
required super.pause,
|
|
required super.backward,
|
|
required super.forward,
|
|
required super.stepBackward,
|
|
required super.stepForward,
|
|
required super.seek,
|
|
});
|
|
}
|