feature: Added LibMDK video player backend (#162)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2024-11-22 18:53:31 +01:00 committed by GitHub
parent 6e32018183
commit da354437e3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
53 changed files with 1499 additions and 1006 deletions

View file

@ -1,23 +1,31 @@
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/profiles/web_profile.dart';
import 'package:flutter/foundation.dart';
const DeviceProfile defaultProfile = kIsWeb
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/settings/video_player_settings.dart';
import 'package:fladder/profiles/web_profile.dart';
import 'package:fladder/providers/video_player_provider.dart';
final videoProfileProvider = StateProvider.autoDispose<DeviceProfile>((ref) =>
defaultProfile(ref.read(videoPlayerProvider.select((value) => value.backend)) ?? PlayerOptions.platformDefaults));
DeviceProfile defaultProfile(PlayerOptions player) => kIsWeb
? webProfile
: DeviceProfile(
maxStreamingBitrate: 120000000,
maxStaticBitrate: 120000000,
musicStreamingTranscodingBitrate: 384000,
directPlayProfiles: [
DirectPlayProfile(
const DirectPlayProfile(
type: DlnaProfileType.video,
),
DirectPlayProfile(
const DirectPlayProfile(
type: DlnaProfileType.audio,
)
],
transcodingProfiles: [
TranscodingProfile(
const TranscodingProfile(
audioCodec: 'aac,mp3,mp2',
container: 'ts',
maxAudioChannels: '2',
@ -28,8 +36,10 @@ const DeviceProfile defaultProfile = kIsWeb
],
containerProfiles: [],
subtitleProfiles: [
SubtitleProfile(format: 'vtt', method: SubtitleDeliveryMethod.$external),
SubtitleProfile(format: 'ass', method: SubtitleDeliveryMethod.$external),
SubtitleProfile(format: 'ssa', method: SubtitleDeliveryMethod.$external),
const SubtitleProfile(format: 'vtt', method: SubtitleDeliveryMethod.$external),
const SubtitleProfile(format: 'ass', method: SubtitleDeliveryMethod.$external),
const SubtitleProfile(format: 'ssa', method: SubtitleDeliveryMethod.$external),
if (player == PlayerOptions.libMDK)
const SubtitleProfile(format: 'pgssub', method: SubtitleDeliveryMethod.$external),
],
);