From 432746daf98c74f63cf2fb1ec37ba3fae8cde8fe Mon Sep 17 00:00:00 2001 From: root Date: Wed, 18 Feb 2026 00:01:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(video-mobile):=20=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8C=BA=E9=A2=84=E8=A7=88=E5=9B=BA=E5=AE=9A=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E5=B9=B6=E5=BC=BA=E5=88=B6inline=E6=92=AD=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/static/public/css/video.css | 23 ++++++++++++++++++++--- app/static/public/js/video.js | 17 +++++++++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/static/public/css/video.css b/app/static/public/css/video.css index be3b5d8..3d2822a 100644 --- a/app/static/public/css/video.css +++ b/app/static/public/css/video.css @@ -1066,15 +1066,32 @@ html[data-theme='dark'] .cache-video-item.is-active .cache-video-thumb-wrap { } .edit-preview-wrap { - max-height: 62vh; + height: min(52vh, 360px); + max-height: min(52vh, 360px); + display: flex; + align-items: center; + justify-content: center; } #editVideo { - max-height: 60vh; + width: 100%; + height: 100%; + max-height: min(52vh, 360px); } .manual-merge-col .edit-preview-wrap { - max-height: 44vh; + height: min(40vh, 280px); + max-height: min(40vh, 280px); + display: flex; + align-items: center; + justify-content: center; + } + + #mergeVideoPreviewA, + #mergeVideoPreviewB { + width: 100%; + height: 100%; + max-height: min(40vh, 280px); } .manual-merge-grid { diff --git a/app/static/public/js/video.js b/app/static/public/js/video.js index dd23882..e278f49 100644 --- a/app/static/public/js/video.js +++ b/app/static/public/js/video.js @@ -122,6 +122,14 @@ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}.${String(milli).padStart(3, '0')}`; } + function enforceInlinePlayback(videoEl) { + if (!(videoEl instanceof HTMLVideoElement)) return; + videoEl.playsInline = true; + videoEl.setAttribute('playsinline', ''); + videoEl.setAttribute('webkit-playsinline', ''); + videoEl.setAttribute('x5-playsinline', 'true'); + } + function shortHash(value) { const raw = String(value || ''); if (!raw) return '-'; @@ -1180,10 +1188,9 @@ const videoEl = body.querySelector('video'); let videoUrl = ''; if (videoEl) { + enforceInlinePlayback(videoEl); videoEl.controls = true; videoEl.preload = 'metadata'; - videoEl.setAttribute('playsinline', ''); - videoEl.setAttribute('webkit-playsinline', ''); const source = videoEl.querySelector('source'); if (source && source.getAttribute('src')) { videoUrl = source.getAttribute('src'); @@ -1237,6 +1244,7 @@ editHint.classList.toggle('hidden', Boolean(safeUrl)); } if (!editVideo) return; + enforceInlinePlayback(editVideo); editVideo.src = safeUrl; editVideo.load(); lockedFrameIndex = -1; @@ -1257,6 +1265,7 @@ function bindMergeVideoA(url) { const safeUrl = String(url || '').trim(); if (!mergeVideoPreviewA) return; + enforceInlinePlayback(mergeVideoPreviewA); mergeVideoPreviewA.src = safeUrl; mergeVideoPreviewA.load(); mergeCutMsA = 0; @@ -1268,6 +1277,7 @@ function bindMergeVideoB(url) { const safeUrl = String(url || '').trim(); if (!mergeVideoPreviewB) return; + enforceInlinePlayback(mergeVideoPreviewB); mergeVideoPreviewB.src = safeUrl; mergeVideoPreviewB.load(); mergeCutMsB = 0; @@ -2541,6 +2551,7 @@ } if (editVideo) { + enforceInlinePlayback(editVideo); editVideo.addEventListener('loadedmetadata', () => { const duration = Number(editVideo.duration || 0); if (editDurationText) { @@ -2565,6 +2576,7 @@ } if (mergeVideoPreviewA) { + enforceInlinePlayback(mergeVideoPreviewA); mergeVideoPreviewA.addEventListener('loadedmetadata', () => { const duration = Number(mergeVideoPreviewA.duration || 0); if (mergeDurationA) { @@ -2578,6 +2590,7 @@ } if (mergeVideoPreviewB) { + enforceInlinePlayback(mergeVideoPreviewB); mergeVideoPreviewB.addEventListener('loadedmetadata', () => { const duration = Number(mergeVideoPreviewB.duration || 0); if (mergeDurationB) {