mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-24 01:58:36 +00:00
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:
committed by
GitHub
parent
6782bee11a
commit
7276cde48a
@@ -464,20 +464,34 @@ class _PostPanelState extends State<PostPanel>
|
||||
tooltip: '预览',
|
||||
icon: const Icon(Icons.preview_outlined),
|
||||
onPressed: () async {
|
||||
final videoCtr = widget.plPlayerController.videoPlayerController;
|
||||
if (videoCtr != null) {
|
||||
final player = plPlayerController.videoPlayerController;
|
||||
if (player != null) {
|
||||
final start = (item.segment.first * 1000).round();
|
||||
final seek = max(0, start - 2000);
|
||||
await videoCtr.seek(Duration(milliseconds: seek));
|
||||
if (!videoCtr.state.playing) {
|
||||
await videoCtr.play();
|
||||
await player.seek(Duration(milliseconds: seek));
|
||||
if (!player.state.playing) {
|
||||
await player.play();
|
||||
}
|
||||
final delay = start - seek;
|
||||
Future<void> seekTo() => videoCtr.seek(
|
||||
Future<void> seekTo() => player.seek(
|
||||
Duration(milliseconds: (item.segment.second * 1000).round()),
|
||||
);
|
||||
if (delay > 0) {
|
||||
Timer(Duration(milliseconds: delay), seekTo);
|
||||
if (start > seek) {
|
||||
final posSub = player.stream.position.listen(
|
||||
null,
|
||||
cancelOnError: true,
|
||||
);
|
||||
final timer = Timer(
|
||||
const Duration(seconds: 10),
|
||||
posSub.cancel,
|
||||
);
|
||||
final duration = Duration(milliseconds: start);
|
||||
posSub.onData((pos) {
|
||||
if (pos >= duration) {
|
||||
seekTo();
|
||||
timer.cancel();
|
||||
posSub.cancel();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
seekTo();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user