恢复记录时机调整
This commit is contained in:
+10
-19
@@ -3001,24 +3001,8 @@ function PlayPageClient() {
|
|||||||
lastRefreshTimeRef.current = now;
|
lastRefreshTimeRef.current = now;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { video: initialVideo } = getPlaybackMedia(
|
// 先请求新链接;请求期间继续播放,进度要在换源前一刻再记录,
|
||||||
preferredHls,
|
// 否则恢复会回退到请求开始时的时间点(倒退几秒)
|
||||||
preferredVideo
|
|
||||||
);
|
|
||||||
if (!initialVideo) {
|
|
||||||
throw new Error('播放器尚未就绪');
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存当前播放进度
|
|
||||||
const currentTime = initialVideo.currentTime;
|
|
||||||
const isPaused = initialVideo.paused;
|
|
||||||
|
|
||||||
console.log(
|
|
||||||
`[链接刷新] 开始刷新 (${isScheduled ? '定时' : '错误触发'}), 当前时间:`,
|
|
||||||
currentTime
|
|
||||||
);
|
|
||||||
|
|
||||||
// 重新获取播放链接(添加时间戳避免缓存)
|
|
||||||
const separator = currentXiaoyaUrlRef.current.includes('?') ? '&' : '?';
|
const separator = currentXiaoyaUrlRef.current.includes('?') ? '&' : '?';
|
||||||
const fetchUrl = `${currentXiaoyaUrlRef.current}${separator}format=json&t=${Date.now()}`;
|
const fetchUrl = `${currentXiaoyaUrlRef.current}${separator}format=json&t=${Date.now()}`;
|
||||||
|
|
||||||
@@ -3053,12 +3037,19 @@ function PlayPageClient() {
|
|||||||
|
|
||||||
console.log('[链接刷新] 获取到新链接');
|
console.log('[链接刷新] 获取到新链接');
|
||||||
|
|
||||||
// 刷新瞬间再取一次 media(播放器可能已重建)
|
// 链接就绪后再取 media,并在此刻记录进度(换源前最后一刻)
|
||||||
const { video, hls } = getPlaybackMedia(preferredHls, preferredVideo);
|
const { video, hls } = getPlaybackMedia(preferredHls, preferredVideo);
|
||||||
if (!video) {
|
if (!video) {
|
||||||
throw new Error('播放器尚未就绪');
|
throw new Error('播放器尚未就绪');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const currentTime = video.currentTime;
|
||||||
|
const isPaused = video.paused;
|
||||||
|
console.log(
|
||||||
|
`[链接刷新] 换源前记录进度 (${isScheduled ? '定时' : '错误触发'}):`,
|
||||||
|
currentTime
|
||||||
|
);
|
||||||
|
|
||||||
// 优先走 HLS 换源;没有 hls 实例时按 progressive 直链处理
|
// 优先走 HLS 换源;没有 hls 实例时按 progressive 直链处理
|
||||||
if (hls && typeof hls.loadSource === 'function') {
|
if (hls && typeof hls.loadSource === 'function') {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user