Compare commits

3 Commits

Author SHA1 Message Date
f777873432 work around opus bug 2026-02-20 16:21:22 +01:00
dc84db8c79 don't bind volume to audio element 2025-06-30 13:11:29 +02:00
7978ea5b37 update build command 2025-05-25 01:43:08 +02:00
2 changed files with 16 additions and 4 deletions

View File

@@ -4,7 +4,7 @@
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite dev", "dev": "vite dev",
"build": "vite build && node ./scripts/create_media_symlink.js", "build": "vite build && bun --bun run ./scripts/create_media_symlink.js",
"preview": "vite preview", "preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",

View File

@@ -79,8 +79,16 @@
let volumeBar = $state(); let volumeBar = $state();
let innerWidth = $state(); let innerWidth = $state();
let innerHeight = $state(); let innerHeight = $state();
let isSafari = $state(false);
onMount(async () => { onMount(async () => {
// work around coreaudio bug
// see https://git.webbieweb.org/apt-get/strimserve/issues/1
const ua = navigator.userAgent;
const isIOS = /iPad|iPhone|iPod/.test(ua);
const isDesktopSafari = /Safari/.test(ua) && !/Chrome/.test(ua) && !/Chromium/.test(ua);
isSafari = isIOS || isDesktopSafari;
// default volume // default volume
const volumeData = localStorage.getItem('volume'); const volumeData = localStorage.getItem('volume');
volume = volumeData ? parseFloat(volumeData) : 0.67; volume = volumeData ? parseFloat(volumeData) : 0.67;
@@ -296,13 +304,17 @@
bind:duration={null, (d) => (duration = d || 0)} bind:duration={null, (d) => (duration = d || 0)}
bind:currentTime bind:currentTime
{muted} {muted}
{volume}
onplay={setMediaMetadataOnPlay} onplay={setMediaMetadataOnPlay}
onended={bubble('ended')} onended={bubble('ended')}
{preload} {preload}
> >
{#if isSafari}
<source src="{src}.mp3" type="audio/mpeg" />
<source {src} type="audio/ogg;codecs=opus" />
{:else}
<source {src} type="audio/ogg;codecs=opus" /> <source {src} type="audio/ogg;codecs=opus" />
<source src="{src}.mp3" type="audio/mpeg" /> <source src="{src}.mp3" type="audio/mpeg" />
{/if}
</audio> </audio>
<style> <style>