From 2e80bc2f885000feb009dfcb9cdcd1c5095226e8 Mon Sep 17 00:00:00 2001 From: Arian Moeini Date: Sat, 3 Oct 2026 13:01:15 +0200 Subject: [PATCH] fix: recognize Opus audio sources by extension --- packages/vidstack/src/utils/mime.test.ts | 13 ++++++++++++- packages/vidstack/src/utils/mime.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/vidstack/src/utils/mime.test.ts b/packages/vidstack/src/utils/mime.test.ts index 997ad1657..627da36e5 100644 --- a/packages/vidstack/src/utils/mime.test.ts +++ b/packages/vidstack/src/utils/mime.test.ts @@ -1,4 +1,15 @@ -import { canGoogleCastSrc } from './mime'; +import { canGoogleCastSrc, isAudioSrc } from './mime'; + +describe(isAudioSrc.name, function () { + it('recognizes an Opus file without relying on its server MIME type', function () { + expect( + isAudioSrc({ + src: 'https://example.com/recording.opus?download=1', + type: '?', + }), + ).to.equal(true); + }); +}); describe(canGoogleCastSrc.name, function () { it('accepts DASH sources by type', function () { diff --git a/packages/vidstack/src/utils/mime.ts b/packages/vidstack/src/utils/mime.ts index 21d2fc149..eaf602112 100644 --- a/packages/vidstack/src/utils/mime.ts +++ b/packages/vidstack/src/utils/mime.ts @@ -5,7 +5,7 @@ import { canPlayHLSNatively } from './support'; // https://github.com/cookpete/react-player/blob/master/src/patterns.js#L16 export const AUDIO_EXTENSIONS = - /\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx|flac)($|\?)/i; + /\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|opus|spx|flac)($|\?)/i; // TODO: We'll need to extend this later. export const AUDIO_TYPES = new Set([