mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-29 06:50:12 +08:00
fix; set subtitle before init (#1742)
* tweka * fix; set subtitle before init
This commit is contained in:
committed by
GitHub
parent
c89d6a5a59
commit
e589f27195
@@ -121,7 +121,7 @@ class VideoDetailController extends GetxController
|
|||||||
final videoPlayerKey = GlobalKey();
|
final videoPlayerKey = GlobalKey();
|
||||||
final childKey = GlobalKey<ScaffoldState>();
|
final childKey = GlobalKey<ScaffoldState>();
|
||||||
|
|
||||||
PlPlayerController plPlayerController = PlPlayerController.getInstance()
|
final plPlayerController = PlPlayerController.getInstance()
|
||||||
..setCurrBrightness(-1.0);
|
..setCurrBrightness(-1.0);
|
||||||
bool get setSystemBrightness => plPlayerController.setSystemBrightness;
|
bool get setSystemBrightness => plPlayerController.setSystemBrightness;
|
||||||
|
|
||||||
@@ -755,7 +755,7 @@ class VideoDetailController extends GetxController
|
|||||||
Future<void> handleSBData(List<SegmentItemModel> list) async {
|
Future<void> handleSBData(List<SegmentItemModel> list) async {
|
||||||
if (list.isNotEmpty) {
|
if (list.isNotEmpty) {
|
||||||
try {
|
try {
|
||||||
Completer? completer;
|
Future? future;
|
||||||
final duration = list.first.videoDuration ?? data.timeLength!;
|
final duration = list.first.videoDuration ?? data.timeLength!;
|
||||||
// segmentList
|
// segmentList
|
||||||
segmentList.addAll(
|
segmentList.addAll(
|
||||||
@@ -813,21 +813,20 @@ class VideoDetailController extends GetxController
|
|||||||
case SkipType.alwaysSkip:
|
case SkipType.alwaysSkip:
|
||||||
case SkipType.skipOnce:
|
case SkipType.skipOnce:
|
||||||
segmentModel.hasSkipped = true;
|
segmentModel.hasSkipped = true;
|
||||||
completer = Completer();
|
|
||||||
final videoPlayerController =
|
final videoPlayerController =
|
||||||
plPlayerController.videoPlayerController!;
|
plPlayerController.videoPlayerController!;
|
||||||
if (videoPlayerController.state.playing) {
|
if (videoPlayerController.state.playing) {
|
||||||
onSkip(
|
future = onSkip(
|
||||||
segmentModel,
|
segmentModel,
|
||||||
).whenComplete(completer!.complete);
|
);
|
||||||
} else {
|
} else {
|
||||||
videoPlayerController.stream.playing.firstWhere((
|
videoPlayerController.stream.playing.firstWhere((
|
||||||
e,
|
e,
|
||||||
) {
|
) {
|
||||||
if (e) {
|
if (e) {
|
||||||
onSkip(
|
future = onSkip(
|
||||||
segmentModel,
|
segmentModel,
|
||||||
).whenComplete(completer!.complete);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -860,7 +859,7 @@ class VideoDetailController extends GetxController
|
|||||||
|
|
||||||
if (positionSubscription == null &&
|
if (positionSubscription == null &&
|
||||||
(autoPlay.value || plPlayerController.preInitPlayer)) {
|
(autoPlay.value || plPlayerController.preInitPlayer)) {
|
||||||
await completer?.future;
|
await future;
|
||||||
initSkip();
|
initSkip();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -1190,11 +1189,11 @@ class VideoDetailController extends GetxController
|
|||||||
seasonId: isUgc ? null : seasonId,
|
seasonId: isUgc ? null : seasonId,
|
||||||
pgcType: isUgc ? null : pgcType,
|
pgcType: isUgc ? null : pgcType,
|
||||||
videoType: videoType,
|
videoType: videoType,
|
||||||
callback: () {
|
callback: () async {
|
||||||
if (videoState.value is! Success) {
|
if (videoState.value is! Success) {
|
||||||
videoState.value = const Success(null);
|
videoState.value = const Success(null);
|
||||||
}
|
}
|
||||||
setSubtitle(vttSubtitlesIndex.value);
|
await setSubtitle(vttSubtitlesIndex.value);
|
||||||
},
|
},
|
||||||
width: firstVideo.width,
|
width: firstVideo.width,
|
||||||
height: firstVideo.height,
|
height: firstVideo.height,
|
||||||
@@ -1486,16 +1485,16 @@ class VideoDetailController extends GetxController
|
|||||||
// 设定字幕轨道
|
// 设定字幕轨道
|
||||||
Future<void> setSubtitle(int index) async {
|
Future<void> setSubtitle(int index) async {
|
||||||
if (index <= 0) {
|
if (index <= 0) {
|
||||||
plPlayerController.videoPlayerController?.setSubtitleTrack(
|
await plPlayerController.videoPlayerController?.setSubtitleTrack(
|
||||||
SubtitleTrack.no(),
|
SubtitleTrack.no(),
|
||||||
);
|
);
|
||||||
vttSubtitlesIndex.value = index;
|
vttSubtitlesIndex.value = index;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSub(String subtitle) {
|
Future<void> setSub(String subtitle) async {
|
||||||
final sub = subtitles[index - 1];
|
final sub = subtitles[index - 1];
|
||||||
plPlayerController.videoPlayerController?.setSubtitleTrack(
|
await plPlayerController.videoPlayerController?.setSubtitleTrack(
|
||||||
SubtitleTrack.data(
|
SubtitleTrack.data(
|
||||||
subtitle,
|
subtitle,
|
||||||
title: sub.lanDoc,
|
title: sub.lanDoc,
|
||||||
@@ -1507,14 +1506,14 @@ class VideoDetailController extends GetxController
|
|||||||
|
|
||||||
String? subtitle = vttSubtitles[index - 1];
|
String? subtitle = vttSubtitles[index - 1];
|
||||||
if (subtitle != null) {
|
if (subtitle != null) {
|
||||||
setSub(subtitle);
|
await setSub(subtitle);
|
||||||
} else {
|
} else {
|
||||||
var result = await VideoHttp.vttSubtitles(
|
var result = await VideoHttp.vttSubtitles(
|
||||||
subtitles[index - 1].subtitleUrl!,
|
subtitles[index - 1].subtitleUrl!,
|
||||||
);
|
);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
vttSubtitles[index - 1] = result;
|
vttSubtitles[index - 1] = result;
|
||||||
setSub(result);
|
await setSub(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1634,7 +1633,7 @@ class VideoDetailController extends GetxController
|
|||||||
? 1
|
? 1
|
||||||
: 0,
|
: 0,
|
||||||
};
|
};
|
||||||
setSubtitle(idx);
|
await setSubtitle(idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -644,8 +644,8 @@ class HeaderControlState extends State<HeaderControl> {
|
|||||||
lanDoc: name.split('.').firstOrNull ?? name,
|
lanDoc: name.split('.').firstOrNull ?? name,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
..vttSubtitles[length] = sub
|
..vttSubtitles[length] = sub;
|
||||||
..setSubtitle(length + 1);
|
await videoDetailCtr.setSubtitle(length + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -703,7 +703,6 @@ class PlPlayerController {
|
|||||||
seekTo,
|
seekTo,
|
||||||
volume,
|
volume,
|
||||||
);
|
);
|
||||||
callback?.call();
|
|
||||||
// 获取视频时长 00:00
|
// 获取视频时长 00:00
|
||||||
_duration.value = duration ?? _videoPlayerController!.state.duration;
|
_duration.value = duration ?? _videoPlayerController!.state.duration;
|
||||||
_position.value = _buffered.value = _sliderPosition.value =
|
_position.value = _buffered.value = _sliderPosition.value =
|
||||||
@@ -718,6 +717,7 @@ class PlPlayerController {
|
|||||||
// listen the video player events
|
// listen the video player events
|
||||||
startListeners();
|
startListeners();
|
||||||
await _initializePlayer();
|
await _initializePlayer();
|
||||||
|
callback?.call();
|
||||||
} catch (err, stackTrace) {
|
} catch (err, stackTrace) {
|
||||||
dataStatus.status.value = DataStatus.error;
|
dataStatus.status.value = DataStatus.error;
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
|
|||||||
Reference in New Issue
Block a user