From 082d973f13b278639a2614681e5ec61878bc4b01 Mon Sep 17 00:00:00 2001 From: hzj <1304805162@qq.com> Date: Fri, 1 May 2026 21:23:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(vap=E6=92=AD=E6=94=BE=E7=BB=84=E4=BB=B6):?= =?UTF-8?q?=20=E5=8A=A0=E4=BA=86=E4=B8=80=E5=B1=82=E5=BA=95=E5=B1=82=20vid?= =?UTF-8?q?eo=20=E5=BC=BA=E5=88=B6=E8=AE=BE=E7=BD=AE=EF=BC=9A=E6=98=BE?= =?UTF-8?q?=E5=BC=8F=E5=86=99=E5=85=A5=20video.playsInline=20=3D=20true?= =?UTF-8?q?=E3=80=81playsinline=E3=80=81webkit-playsinline=E3=80=81x5-play?= =?UTF-8?q?sinline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/VapMp4Player.vue | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/components/VapMp4Player.vue b/src/components/VapMp4Player.vue index 93e0fb8..1f493c2 100644 --- a/src/components/VapMp4Player.vue +++ b/src/components/VapMp4Player.vue @@ -96,6 +96,27 @@ let playToken = 0 const teleportToBody = computed(() => props.mode === 'overlay') const resolvedSrc = computed(() => resolveProtectedAssetUrl(props.src)) +function enforceVideoPlaybackAttributes(video, shouldMute) { + if (!video) { + return + } + + video.playsInline = true + video.setAttribute('playsinline', '') + video.setAttribute('webkit-playsinline', '') + video.setAttribute('x5-playsinline', '') + + if (shouldMute) { + video.muted = true + video.defaultMuted = true + video.volume = 0 + video.setAttribute('muted', '') + } else { + video.defaultMuted = false + video.removeAttribute('muted') + } +} + function destroyPlayer() { if (player) { player.destroy() @@ -177,6 +198,14 @@ async function startPlay() { ...props.vapData, }) + enforceVideoPlaybackAttributes(player?.video, props.mute) + player?.video?.addEventListener('loadedmetadata', () => { + enforceVideoPlaybackAttributes(player?.video, props.mute) + }) + player?.video?.addEventListener('canplay', () => { + enforceVideoPlaybackAttributes(player?.video, props.mute) + }) + player.on('ended', handleEnded) player.on('playing', () => { loading.value = false