diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2023-11-26 16:15:24 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-26 16:15:24 +0900 |
| commit | d60f645d1dc731d7ef6eff16081d2b5615412690 (patch) | |
| tree | 76e655575fc1c64259be97a46f9f4c80fc27c7c7 /packages/frontend/src/scripts | |
| parent | サウンド設定に「サウンドを出力しない」と「Misskeyがア... (diff) | |
| download | sharkey-d60f645d1dc731d7ef6eff16081d2b5615412690.tar.gz sharkey-d60f645d1dc731d7ef6eff16081d2b5615412690.tar.bz2 sharkey-d60f645d1dc731d7ef6eff16081d2b5615412690.zip | |
chore(frontend/MkMediaVideo): loop and autoplay silent videos (#12392)
Diffstat (limited to 'packages/frontend/src/scripts')
| -rw-r--r-- | packages/frontend/src/scripts/media-has-audio.ts | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/media-has-audio.ts b/packages/frontend/src/scripts/media-has-audio.ts new file mode 100644 index 0000000000..3421a38a76 --- /dev/null +++ b/packages/frontend/src/scripts/media-has-audio.ts @@ -0,0 +1,9 @@ +export default async function hasAudio(media: HTMLMediaElement) { + const cloned = media.cloneNode() as HTMLMediaElement; + cloned.muted = (cloned as typeof cloned & Partial<HTMLVideoElement>).playsInline = true; + cloned.play(); + await new Promise((resolve) => cloned.addEventListener('playing', resolve)); + const result = !!(cloned as any).audioTracks?.length || (cloned as any).mozHasAudio || !!(cloned as any).webkitAudioDecodedByteCount; + cloned.remove(); + return result; +} |