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

@@ -33,6 +33,7 @@ import 'package:PiliPlus/pages/video/introduction/ugc/widgets/action_item.dart';
import 'package:PiliPlus/pages/video/introduction/ugc/widgets/menu_row.dart';
import 'package:PiliPlus/pages/video/widgets/header_mixin.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/models/data_source.dart';
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart';
import 'package:PiliPlus/services/service_locator.dart';
@@ -542,7 +543,9 @@ class HeaderControlState extends State<HeaderControl>
);
},
),
if ((isFileSource && plPlayerController.mediaType != 1) ||
if ((isFileSource &&
!(plPlayerController.dataSource as FileSource)
.isMp4) ||
(!isFileSource &&
videoDetailCtr.audioUrl?.isNotEmpty == true))
Obx(
@@ -751,19 +754,16 @@ class HeaderControlState extends State<HeaderControl>
);
}
static Future<void> showPlayerInfo(
static void showPlayerInfo(
BuildContext context, {
required PlPlayerController plPlayerController,
}) async {
}) {
final player = plPlayerController.videoPlayerController;
if (player == null) {
SmartDialog.showToast('播放器未初始化');
return;
}
final hwdec = await player.platform!.getProperty(
'hwdec-current',
);
if (!context.mounted) return;
final hwdec = player.getProperty('hwdec-current');
showDialog(
context: context,
builder: (context) {
@@ -855,16 +855,6 @@ class HeaderControlState extends State<HeaderControl>
subtitle: Text(state.rate.toString()),
onTap: () => Utils.copyText('rate\n${state.rate}'),
),
ListTile(
dense: true,
title: const Text("AudioBitrate"),
subtitle: Text(
state.audioBitrate.toString(),
),
onTap: () => Utils.copyText(
'AudioBitrate\n${state.audioBitrate}',
),
),
ListTile(
dense: true,
title: const Text("Volume"),

View File

@@ -73,17 +73,15 @@ class PlayerFocus extends StatelessWidget {
void _updateVolume(KeyEvent event, {required bool isIncrease}) {
if (event is KeyDownEvent) {
if (hasPlayer) {
_setVolume(isIncrease: isIncrease);
plPlayerController
..cancelLongPressTimer()
..longPressTimer ??= Timer.periodic(
..longPressTimer?.cancel()
..longPressTimer = Timer.periodic(
const Duration(milliseconds: 150),
(_) => _setVolume(isIncrease: isIncrease),
);
}
} else if (event is KeyUpEvent) {
if (plPlayerController.longPressTimer?.tick == 0 && hasPlayer) {
_setVolume(isIncrease: isIncrease);
}
plPlayerController.cancelLongPressTimer();
}
}
@@ -122,8 +120,8 @@ class PlayerFocus extends StatelessWidget {
if (event is KeyDownEvent) {
if (hasPlayer && !plPlayerController.longPressStatus.value) {
plPlayerController
..cancelLongPressTimer()
..longPressTimer ??= Timer(
..longPressTimer?.cancel()
..longPressTimer = Timer(
const Duration(milliseconds: 200),
() => plPlayerController
..cancelLongPressTimer()