fix: video duration

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-30 13:57:21 +08:00
parent 21550815db
commit afcf817c4f
4 changed files with 21 additions and 15 deletions

View File

@@ -1359,7 +1359,8 @@ class VideoDetailController extends GetxController
duration += split[i] * pow(60, i).toInt();
}
if (duration <=
plPlayerController.durationSeconds.value) {
plPlayerController
.durationSeconds.value.inSeconds) {
setState(() {
updateSegment(
isFirst: isFirst,
@@ -1687,7 +1688,9 @@ class VideoDetailController extends GetxController
'userID': GStorage.blockUserID,
'userAgent': Constants.userAgent,
'videoDuration': plPlayerController
.durationSeconds.value,
.durationSeconds
.value
.inSeconds,
},
data: {
'segments': list!

View File

@@ -58,7 +58,7 @@ class PlPlayerController {
// 展示使用
final Rx<Duration> _sliderTempPosition = Rx(Duration.zero);
final Rx<Duration> _duration = Rx(Duration.zero);
final RxInt durationSeconds = 0.obs;
final Rx<Duration> durationSeconds = Duration.zero.obs;
final Rx<Duration> _buffered = Rx(Duration.zero);
final RxInt bufferedSeconds = 0.obs;
@@ -330,9 +330,8 @@ class PlPlayerController {
}
void updateDurationSecond() {
int newSecond = _duration.value.inSeconds;
if (durationSeconds.value != newSecond) {
durationSeconds.value = newSecond;
if (durationSeconds.value != _duration.value) {
durationSeconds.value = _duration.value;
}
}
@@ -1437,7 +1436,7 @@ class PlPlayerController {
}
bool isComplete = playerStatus.status.value == PlayerStatus.completed ||
type == 'completed';
if ((duration.value - position.value).inMilliseconds > 1000) {
if ((durationSeconds.value - position.value).inMilliseconds > 1000) {
isComplete = false;
}
// 播放状态变化时,更新

View File

@@ -321,7 +321,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
}),
Obx(
() => Text(
Utils.timeFormat(plPlayerController.durationSeconds.value),
Utils.timeFormat(
plPlayerController.durationSeconds.value.inSeconds),
style: const TextStyle(
color: Color(0xFFD0D0D0),
fontSize: 10,
@@ -329,7 +330,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
fontFeatures: [FontFeature.tabularFigures()],
),
semanticsLabel:
'${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.durationSeconds.value))}',
'${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.durationSeconds.value.inSeconds))}',
),
),
],
@@ -702,7 +703,8 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
if (plPlayerController.showSeekPreview) {
try {
plPlayerController.previewDx.value = result.inMilliseconds /
plPlayerController.duration.value.inMilliseconds *
plPlayerController
.durationSeconds.value.inMilliseconds *
context.size!.width;
if (plPlayerController.showPreview.value.not) {
plPlayerController.showPreview.value = true;
@@ -856,11 +858,13 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
const SizedBox(width: 2),
Obx(
() => Text(
plPlayerController.duration.value.inMinutes >= 60
plPlayerController
.durationSeconds.value.inMinutes >=
60
? printDurationWithHours(
plPlayerController.duration.value)
plPlayerController.durationSeconds.value)
: printDuration(
plPlayerController.duration.value),
plPlayerController.durationSeconds.value),
style: textStyle,
),
),
@@ -1071,7 +1075,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
Obx(
() {
final int value = plPlayerController.sliderPositionSeconds.value;
final int max = plPlayerController.durationSeconds.value;
final int max = plPlayerController.durationSeconds.value.inSeconds;
final int buffer = plPlayerController.bufferedSeconds.value;
if (plPlayerController.showControls.value) {
return const SizedBox.shrink();

View File

@@ -38,7 +38,7 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget {
Obx(
() {
final int value = controller!.sliderPositionSeconds.value;
final int max = controller!.durationSeconds.value;
final int max = controller!.durationSeconds.value.inSeconds;
final int buffer = controller!.bufferedSeconds.value;
if (value > max || max <= 0) {
return nil;