refa player (#1848)

* tweak

* Reapply "opt: audio uri" (#1833)

This reverts commit 8e726f49b2.

* opt: player

* opt: player

* refa: create player

* refa: player

* opt: UaType

* fix: sb seek preview

* opt: setSub

* fix: screenshot

* opt: unnecessary final player state

* opt: player track

* opt FileSource constructor [skip ci]

* fixes

* fix: dispose player

* fix: quote

* update

* fix: multi ua & remove unused loop

* remove unneeded check [skip ci]

---------

Co-authored-by: dom <githubaccount56556@proton.me>
This commit is contained in:
My-Responsitories
2026-02-27 15:51:55 +08:00
committed by GitHub
parent 6782bee11a
commit 7276cde48a
39 changed files with 1063 additions and 1112 deletions

View File

@@ -3,6 +3,7 @@
import 'dart:async';
import 'dart:ffi';
import 'package:PiliPlus/http/browser_ua.dart';
import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
@@ -13,10 +14,9 @@ import 'package:media_kit/ffi/src/utf8.dart';
import 'package:media_kit/generated/libmpv/bindings.dart' as generated;
import 'package:media_kit/media_kit.dart';
import 'package:media_kit/src/player/native/core/initializer.dart';
import 'package:media_kit/src/player/native/core/native_library.dart';
class MpvConvertWebp {
final _mpv = generated.MPV(DynamicLibrary.open(NativeLibrary.path));
final _mpv = NativePlayer.mpv;
late final Pointer<generated.mpv_handle> _ctx;
final _completer = Completer<bool>();
@@ -41,7 +41,7 @@ class MpvConvertWebp {
Future<void> _init() async {
final enableHA = Pref.enableHA;
_ctx = await Initializer.create(
NativeLibrary.path,
_mpv,
_onEvent,
options: {
'o': outFile,
@@ -58,13 +58,10 @@ class MpvConvertWebp {
},
);
NativePlayer.setHeader(
const {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
'referer': HttpString.baseUrl,
},
_mpv,
_ctx,
userAgent: BrowserUa.pc,
referer: HttpString.baseUrl,
);
if (progress != null) {
_observeProperty('time-pos');
@@ -86,7 +83,7 @@ class MpvConvertWebp {
return _completer.future;
}
Future<void> _onEvent(Pointer<generated.mpv_event> event) async {
Future<void>? _onEvent(Pointer<generated.mpv_event> event) {
switch (event.ref.event_id) {
case generated.mpv_event_id.MPV_EVENT_PROPERTY_CHANGE:
final prop = event.ref.data.cast<generated.mpv_event_property>().ref;
@@ -117,11 +114,12 @@ class MpvConvertWebp {
dispose();
break;
}
return null;
}
void _command(List<String> args) {
final pointers = args.map((e) => e.toNativeUtf8()).toList();
final arr = calloc<Pointer<Uint8>>(128);
final arr = calloc<Pointer<Uint8>>(pointers.length + 1);
for (int i = 0; i < args.length; i++) {
arr[i] = pointers[i];
}