mirror of
https://github.com/gabehf/Fladder.git
synced 2026-03-08 23:18:16 -07:00
chore: Update MPV package to latest version (#165)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
parent
da354437e3
commit
a518ae457e
28 changed files with 209 additions and 133 deletions
|
|
@ -78,7 +78,7 @@ class MediaControlsWrapper extends BaseAudioHandler {
|
|||
|
||||
Future<void> setup(BasePlayer newPlayer) async {
|
||||
_player = newPlayer;
|
||||
await newPlayer.init(ref);
|
||||
await newPlayer.init(ref.read(videoPlayerSettingsProvider));
|
||||
_initPlayer();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,9 @@ import 'dart:async';
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'package:fladder/models/items/media_streams_model.dart';
|
||||
import 'package:fladder/models/playback/playback_model.dart';
|
||||
import 'package:fladder/models/settings/video_player_settings.dart';
|
||||
import 'package:fladder/wrappers/players/player_states.dart';
|
||||
|
||||
const libassFallbackFont = "assets/mp-font.ttf";
|
||||
|
|
@ -14,7 +13,7 @@ abstract class BasePlayer {
|
|||
Stream<PlayerState> get stateStream;
|
||||
PlayerState lastState = PlayerState();
|
||||
|
||||
Future<void> init(Ref ref);
|
||||
Future<void> init(VideoPlayerSettingsModel settings);
|
||||
Widget? videoWidget(
|
||||
Key key,
|
||||
BoxFit fit,
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@ import 'dart:io';
|
|||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:fvp/fvp.dart' as fvp;
|
||||
import 'package:fvp/mdk.dart';
|
||||
import 'package:video_player/video_player.dart';
|
||||
|
||||
import 'package:fladder/models/items/media_streams_model.dart';
|
||||
import 'package:fladder/models/playback/playback_model.dart';
|
||||
import 'package:fladder/models/settings/video_player_settings.dart';
|
||||
import 'package:fladder/wrappers/players/base_player.dart';
|
||||
import 'package:fladder/wrappers/players/player_states.dart';
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ class LibMDK extends BasePlayer {
|
|||
Stream<PlayerState> get stateStream => _stateController.stream;
|
||||
|
||||
@override
|
||||
Future<void> init(Ref ref) async {
|
||||
Future<void> init(VideoPlayerSettingsModel settings) async {
|
||||
dispose();
|
||||
fvp.registerWith(options: {
|
||||
'global': {'log': 'off'},
|
||||
|
|
@ -41,19 +41,26 @@ class LibMDK extends BasePlayer {
|
|||
|
||||
@override
|
||||
Future<void> open(String url, bool play) async {
|
||||
if (_controller != null) {
|
||||
_controller?.dispose();
|
||||
}
|
||||
final validUrl = isValidUrl(url);
|
||||
if (validUrl != null) {
|
||||
_controller = VideoPlayerController.networkUrl(validUrl);
|
||||
} else {
|
||||
_controller = VideoPlayerController.file(File(url));
|
||||
}
|
||||
await _controller?.initialize();
|
||||
|
||||
await _controller?.initialize();
|
||||
_controller?.addListener(() => updateState());
|
||||
|
||||
if (play) {
|
||||
await _controller?.play();
|
||||
}
|
||||
_controller?.setBufferRange(
|
||||
min: const Duration(seconds: 15).inMilliseconds,
|
||||
max: const Duration(seconds: 30).inMilliseconds,
|
||||
);
|
||||
return setState(lastState.update(
|
||||
buffering: true,
|
||||
));
|
||||
|
|
@ -73,10 +80,21 @@ class LibMDK extends BasePlayer {
|
|||
volume: (_controller?.value.volume ?? 1.0) * 100,
|
||||
rate: _controller?.value.playbackSpeed ?? 1.0,
|
||||
buffering: _controller?.value.isBuffering ?? true,
|
||||
buffer: _controller?.value.buffered.last.end ?? Duration.zero,
|
||||
buffer: calculateBufferedDuration(_controller?.value),
|
||||
));
|
||||
}
|
||||
|
||||
Duration calculateBufferedDuration(VideoPlayerValue? value) {
|
||||
if (value == null) return Duration.zero;
|
||||
if (value.buffered.isEmpty) {
|
||||
return Duration.zero;
|
||||
}
|
||||
|
||||
return value.buffered.fold(value.position, (total, range) {
|
||||
return (total + (range.end - range.start));
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> pause() async => _controller?.pause();
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ import 'package:media_kit_video/media_kit_video.dart';
|
|||
import 'package:fladder/models/items/media_streams_model.dart';
|
||||
import 'package:fladder/models/playback/playback_model.dart';
|
||||
import 'package:fladder/models/settings/subtitle_settings_model.dart';
|
||||
import 'package:fladder/models/settings/video_player_settings.dart';
|
||||
import 'package:fladder/providers/settings/subtitle_settings_provider.dart';
|
||||
import 'package:fladder/providers/settings/video_player_settings_provider.dart';
|
||||
import 'package:fladder/wrappers/players/base_player.dart';
|
||||
import 'package:fladder/wrappers/players/player_states.dart';
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ class LibMPV extends BasePlayer {
|
|||
StreamSubscription<bool>? _onCompleted;
|
||||
|
||||
@override
|
||||
Future<void> init(Ref ref) async {
|
||||
Future<void> init(VideoPlayerSettingsModel settings) async {
|
||||
dispose();
|
||||
|
||||
mpv.MediaKit.ensureInitialized();
|
||||
|
|
@ -36,10 +36,7 @@ class LibMPV extends BasePlayer {
|
|||
configuration: mpv.PlayerConfiguration(
|
||||
title: "nl.jknaapen.fladder",
|
||||
libassAndroidFont: libassFallbackFont,
|
||||
libass: !kIsWeb &&
|
||||
ref.read(
|
||||
videoPlayerSettingsProvider.select((value) => value.useLibass),
|
||||
),
|
||||
libass: !kIsWeb && settings.useLibass,
|
||||
),
|
||||
);
|
||||
|
||||
|
|
@ -47,9 +44,7 @@ class LibMPV extends BasePlayer {
|
|||
_controller = VideoController(
|
||||
_player!,
|
||||
configuration: VideoControllerConfiguration(
|
||||
enableHardwareAcceleration: ref.read(
|
||||
videoPlayerSettingsProvider.select((value) => value.hardwareAccel),
|
||||
),
|
||||
enableHardwareAcceleration: settings.hardwareAccel,
|
||||
),
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue