chore: Update MPV package to latest version (#165)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2024-11-28 21:42:40 +01:00 committed by GitHub
parent da354437e3
commit a518ae457e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 209 additions and 133 deletions

View file

@ -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();
}

View file

@ -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,

View file

@ -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

View file

@ -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,
),
);