From e559d3bc6f57bbafd01933ceb96100a4393f68cc Mon Sep 17 00:00:00 2001 From: Harvey Zhao Date: Sat, 3 Jan 2026 14:02:30 +0800 Subject: [PATCH] feat: enhance artplayerPluginAudioTrack with update method for dynamic option changes --- docs/assets/ts/artplayer-plugin-ads.d.ts | 4 +-- .../assets/ts/artplayer-plugin-ambilight.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-asr.d.ts | 4 +-- .../ts/artplayer-plugin-audio-track.d.ts | 4 +-- .../ts/artplayer-plugin-auto-thumbnail.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-chapter.d.ts | 4 +-- .../ts/artplayer-plugin-chromecast.d.ts | 4 +-- .../ts/artplayer-plugin-danmuku-mask.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-danmuku.d.ts | 4 +-- .../ts/artplayer-plugin-dash-control.d.ts | 4 +-- .../ts/artplayer-plugin-document-pip.d.ts | 4 +-- .../ts/artplayer-plugin-hls-control.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-iframe.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-libass.d.ts | 4 +-- .../ts/artplayer-plugin-liquid-glass.d.ts | 4 +-- .../artplayer-plugin-multiple-subtitles.d.ts | 4 +-- docs/assets/ts/artplayer-plugin-vast.d.ts | 4 +-- .../ts/artplayer-plugin-vtt-thumbnail.d.ts | 4 +-- docs/assets/ts/artplayer-proxy-canvas.d.ts | 4 +-- .../assets/ts/artplayer-proxy-mediabunny.d.ts | 4 +-- docs/assets/ts/artplayer.d.ts | 36 ++----------------- .../artplayer-plugin-audio-track/src/index.js | 35 +++++++++++++----- .../types/artplayer-plugin-audio-track.d.ts | 5 +++ 23 files changed, 73 insertions(+), 83 deletions(-) diff --git a/docs/assets/ts/artplayer-plugin-ads.d.ts b/docs/assets/ts/artplayer-plugin-ads.d.ts index dd3cde90e..618fdd6c1 100644 --- a/docs/assets/ts/artplayer-plugin-ads.d.ts +++ b/docs/assets/ts/artplayer-plugin-ads.d.ts @@ -48,5 +48,5 @@ declare const artplayerPluginAds: (option: Option) => (art: Artplayer) => Ads export default artplayerPluginAds -export = artplayerPluginAds; -export as namespace artplayerPluginAds; \ No newline at end of file +export = artplayerPluginAds +export as namespace artplayerPluginAds; diff --git a/docs/assets/ts/artplayer-plugin-ambilight.d.ts b/docs/assets/ts/artplayer-plugin-ambilight.d.ts index 786b884f4..50abda15a 100644 --- a/docs/assets/ts/artplayer-plugin-ambilight.d.ts +++ b/docs/assets/ts/artplayer-plugin-ambilight.d.ts @@ -16,5 +16,5 @@ declare const artplayerPluginAmbilight: (option: Option) => (art: Artplayer) => export default artplayerPluginAmbilight -export = artplayerPluginAmbilight; -export as namespace artplayerPluginAmbilight; \ No newline at end of file +export = artplayerPluginAmbilight +export as namespace artplayerPluginAmbilight; diff --git a/docs/assets/ts/artplayer-plugin-asr.d.ts b/docs/assets/ts/artplayer-plugin-asr.d.ts index a134e7348..769e0b30f 100644 --- a/docs/assets/ts/artplayer-plugin-asr.d.ts +++ b/docs/assets/ts/artplayer-plugin-asr.d.ts @@ -22,5 +22,5 @@ declare function artplayerPluginAsr(option?: AsrPluginOption): (art: Artplayer) export default artplayerPluginAsr -export = artplayerPluginAsr; -export as namespace artplayerPluginAsr; \ No newline at end of file +export = artplayerPluginAsr +export as namespace artplayerPluginAsr; diff --git a/docs/assets/ts/artplayer-plugin-audio-track.d.ts b/docs/assets/ts/artplayer-plugin-audio-track.d.ts index bdf6b1a98..d20c30f16 100644 --- a/docs/assets/ts/artplayer-plugin-audio-track.d.ts +++ b/docs/assets/ts/artplayer-plugin-audio-track.d.ts @@ -31,5 +31,5 @@ declare const artplayerPluginAudioTrack: (option: Option) => (art: Artplayer) => export default artplayerPluginAudioTrack -export = artplayerPluginAudioTrack; -export as namespace artplayerPluginAudioTrack; \ No newline at end of file +export = artplayerPluginAudioTrack +export as namespace artplayerPluginAudioTrack; diff --git a/docs/assets/ts/artplayer-plugin-auto-thumbnail.d.ts b/docs/assets/ts/artplayer-plugin-auto-thumbnail.d.ts index dff0302ce..e6f616aa0 100644 --- a/docs/assets/ts/artplayer-plugin-auto-thumbnail.d.ts +++ b/docs/assets/ts/artplayer-plugin-auto-thumbnail.d.ts @@ -13,5 +13,5 @@ declare const artplayerPluginAutoThumbnail: (option: Option) => (art: Artplayer) export default artplayerPluginAutoThumbnail -export = artplayerPluginAutoThumbnail; -export as namespace artplayerPluginAutoThumbnail; \ No newline at end of file +export = artplayerPluginAutoThumbnail +export as namespace artplayerPluginAutoThumbnail; diff --git a/docs/assets/ts/artplayer-plugin-chapter.d.ts b/docs/assets/ts/artplayer-plugin-chapter.d.ts index 0c16baa40..5d6f7b378 100644 --- a/docs/assets/ts/artplayer-plugin-chapter.d.ts +++ b/docs/assets/ts/artplayer-plugin-chapter.d.ts @@ -17,5 +17,5 @@ declare const artplayerPluginChapter: (option: Option) => (art: Artplayer) => Re export default artplayerPluginChapter -export = artplayerPluginChapter; -export as namespace artplayerPluginChapter; \ No newline at end of file +export = artplayerPluginChapter +export as namespace artplayerPluginChapter; diff --git a/docs/assets/ts/artplayer-plugin-chromecast.d.ts b/docs/assets/ts/artplayer-plugin-chromecast.d.ts index 4d3aadd12..5069b042d 100644 --- a/docs/assets/ts/artplayer-plugin-chromecast.d.ts +++ b/docs/assets/ts/artplayer-plugin-chromecast.d.ts @@ -13,5 +13,5 @@ declare const artplayerPluginChromecast: (option: Option) => (art: Artplayer) => export default artplayerPluginChromecast -export = artplayerPluginChromecast; -export as namespace artplayerPluginChromecast; \ No newline at end of file +export = artplayerPluginChromecast +export as namespace artplayerPluginChromecast; diff --git a/docs/assets/ts/artplayer-plugin-danmuku-mask.d.ts b/docs/assets/ts/artplayer-plugin-danmuku-mask.d.ts index b2c996b79..68515f8f8 100644 --- a/docs/assets/ts/artplayer-plugin-danmuku-mask.d.ts +++ b/docs/assets/ts/artplayer-plugin-danmuku-mask.d.ts @@ -21,5 +21,5 @@ declare const artplayerPluginDanmukuMask: (option?: Option) => (art: Artplayer) export default artplayerPluginDanmukuMask -export = artplayerPluginDanmukuMask; -export as namespace artplayerPluginDanmukuMask; \ No newline at end of file +export = artplayerPluginDanmukuMask +export as namespace artplayerPluginDanmukuMask; diff --git a/docs/assets/ts/artplayer-plugin-danmuku.d.ts b/docs/assets/ts/artplayer-plugin-danmuku.d.ts index 6f6a5ec04..554ce0fe2 100644 --- a/docs/assets/ts/artplayer-plugin-danmuku.d.ts +++ b/docs/assets/ts/artplayer-plugin-danmuku.d.ts @@ -255,5 +255,5 @@ declare const artplayerPluginDanmuku: (option: Option) => (art: Artplayer) => Re export default artplayerPluginDanmuku -export = artplayerPluginDanmuku; -export as namespace artplayerPluginDanmuku; \ No newline at end of file +export = artplayerPluginDanmuku +export as namespace artplayerPluginDanmuku; diff --git a/docs/assets/ts/artplayer-plugin-dash-control.d.ts b/docs/assets/ts/artplayer-plugin-dash-control.d.ts index 35057bb07..39a52d129 100644 --- a/docs/assets/ts/artplayer-plugin-dash-control.d.ts +++ b/docs/assets/ts/artplayer-plugin-dash-control.d.ts @@ -13,5 +13,5 @@ declare const artplayerPluginDashControl: (option: { quality?: Config, audio?: C export default artplayerPluginDashControl -export = artplayerPluginDashControl; -export as namespace artplayerPluginDashControl; \ No newline at end of file +export = artplayerPluginDashControl +export as namespace artplayerPluginDashControl; diff --git a/docs/assets/ts/artplayer-plugin-document-pip.d.ts b/docs/assets/ts/artplayer-plugin-document-pip.d.ts index dee9d2c41..df061d9f4 100644 --- a/docs/assets/ts/artplayer-plugin-document-pip.d.ts +++ b/docs/assets/ts/artplayer-plugin-document-pip.d.ts @@ -18,5 +18,5 @@ declare const artplayerPluginDocumentPip: (option: Option) => (art: Artplayer) = export default artplayerPluginDocumentPip -export = artplayerPluginDocumentPip; -export as namespace artplayerPluginDocumentPip; \ No newline at end of file +export = artplayerPluginDocumentPip +export as namespace artplayerPluginDocumentPip; diff --git a/docs/assets/ts/artplayer-plugin-hls-control.d.ts b/docs/assets/ts/artplayer-plugin-hls-control.d.ts index 01c881339..f047513e8 100644 --- a/docs/assets/ts/artplayer-plugin-hls-control.d.ts +++ b/docs/assets/ts/artplayer-plugin-hls-control.d.ts @@ -13,5 +13,5 @@ declare const artplayerPluginHlsControl: (option: { quality?: Config, audio?: Co export default artplayerPluginHlsControl -export = artplayerPluginHlsControl; -export as namespace artplayerPluginHlsControl; \ No newline at end of file +export = artplayerPluginHlsControl +export as namespace artplayerPluginHlsControl; diff --git a/docs/assets/ts/artplayer-plugin-iframe.d.ts b/docs/assets/ts/artplayer-plugin-iframe.d.ts index f5ebf54f5..88cfd5bad 100644 --- a/docs/assets/ts/artplayer-plugin-iframe.d.ts +++ b/docs/assets/ts/artplayer-plugin-iframe.d.ts @@ -28,5 +28,5 @@ declare class ArtplayerPluginIframe { export default ArtplayerPluginIframe -export = artplayerPluginIframe; -export as namespace artplayerPluginIframe; \ No newline at end of file +export = artplayerPluginIframe +export as namespace artplayerPluginIframe; diff --git a/docs/assets/ts/artplayer-plugin-libass.d.ts b/docs/assets/ts/artplayer-plugin-libass.d.ts index ae373d1b6..ff0632692 100644 --- a/docs/assets/ts/artplayer-plugin-libass.d.ts +++ b/docs/assets/ts/artplayer-plugin-libass.d.ts @@ -11,5 +11,5 @@ declare const artplayerPluginAss: (options: Options) => (art: Artplayer) => { export default artplayerPluginAss -export = artplayerPluginLibass; -export as namespace artplayerPluginLibass; \ No newline at end of file +export = artplayerPluginLibass +export as namespace artplayerPluginLibass; diff --git a/docs/assets/ts/artplayer-plugin-liquid-glass.d.ts b/docs/assets/ts/artplayer-plugin-liquid-glass.d.ts index 3cf67cd37..b41ff393a 100644 --- a/docs/assets/ts/artplayer-plugin-liquid-glass.d.ts +++ b/docs/assets/ts/artplayer-plugin-liquid-glass.d.ts @@ -12,5 +12,5 @@ declare const artplayerPluginLiquidGlass: (option?: Option) => (art: Artplayer) export default artplayerPluginLiquidGlass -export = artplayerPluginLiquidGlass; -export as namespace artplayerPluginLiquidGlass; \ No newline at end of file +export = artplayerPluginLiquidGlass +export as namespace artplayerPluginLiquidGlass; diff --git a/docs/assets/ts/artplayer-plugin-multiple-subtitles.d.ts b/docs/assets/ts/artplayer-plugin-multiple-subtitles.d.ts index 4d6161dff..a6f710bc1 100644 --- a/docs/assets/ts/artplayer-plugin-multiple-subtitles.d.ts +++ b/docs/assets/ts/artplayer-plugin-multiple-subtitles.d.ts @@ -12,5 +12,5 @@ declare const artplayerPluginMultipleSubtitles: (option: { export default artplayerPluginMultipleSubtitles -export = artplayerPluginMultipleSubtitles; -export as namespace artplayerPluginMultipleSubtitles; \ No newline at end of file +export = artplayerPluginMultipleSubtitles +export as namespace artplayerPluginMultipleSubtitles; diff --git a/docs/assets/ts/artplayer-plugin-vast.d.ts b/docs/assets/ts/artplayer-plugin-vast.d.ts index b34e73c10..41d815667 100644 --- a/docs/assets/ts/artplayer-plugin-vast.d.ts +++ b/docs/assets/ts/artplayer-plugin-vast.d.ts @@ -29,5 +29,5 @@ declare function artplayerPluginVast( export default artplayerPluginVast -export = artplayerPluginVast; -export as namespace artplayerPluginVast; \ No newline at end of file +export = artplayerPluginVast +export as namespace artplayerPluginVast; diff --git a/docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts b/docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts index aaed1e528..4e8307e77 100644 --- a/docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts +++ b/docs/assets/ts/artplayer-plugin-vtt-thumbnail.d.ts @@ -6,5 +6,5 @@ declare const artplayerPluginVttThumbnail: (option: { vtt?: string, style?: Part export default artplayerPluginVttThumbnail -export = artplayerPluginVttThumbnail; -export as namespace artplayerPluginVttThumbnail; \ No newline at end of file +export = artplayerPluginVttThumbnail +export as namespace artplayerPluginVttThumbnail; diff --git a/docs/assets/ts/artplayer-proxy-canvas.d.ts b/docs/assets/ts/artplayer-proxy-canvas.d.ts index caf16cc42..0db0ddf98 100644 --- a/docs/assets/ts/artplayer-proxy-canvas.d.ts +++ b/docs/assets/ts/artplayer-proxy-canvas.d.ts @@ -6,5 +6,5 @@ declare const artplayerProxyCanvas: (option?: Option) => (art: Artplayer) => Res export default artplayerProxyCanvas -export = artplayerProxyCanvas; -export as namespace artplayerProxyCanvas; \ No newline at end of file +export = artplayerProxyCanvas +export as namespace artplayerProxyCanvas; diff --git a/docs/assets/ts/artplayer-proxy-mediabunny.d.ts b/docs/assets/ts/artplayer-proxy-mediabunny.d.ts index 152c886fb..823eb12ab 100644 --- a/docs/assets/ts/artplayer-proxy-mediabunny.d.ts +++ b/docs/assets/ts/artplayer-proxy-mediabunny.d.ts @@ -75,5 +75,5 @@ declare const artplayerProxyMediabunny: (option?: Option) => (art: Artplayer) => export default artplayerProxyMediabunny -export = artplayerProxyMediabunny; -export as namespace artplayerProxyMediabunny; \ No newline at end of file +export = artplayerProxyMediabunny +export as namespace artplayerProxyMediabunny; diff --git a/docs/assets/ts/artplayer.d.ts b/docs/assets/ts/artplayer.d.ts index 964913abc..401974c9a 100644 --- a/docs/assets/ts/artplayer.d.ts +++ b/docs/assets/ts/artplayer.d.ts @@ -126,8 +126,6 @@ export interface Subtitle { onVttLoad?: (vtt: string) => string } - - export interface SettingOption extends Omit { html: string icon: string | undefined @@ -239,10 +237,6 @@ export interface Quality { url: string } - - - - export type AspectRatio = 'default' | '4:3' | '16:9' | (`${number}:${number}` & Record) export type PlaybackRate = 0.5 | 0.75 | 1.0 | 1.25 | 1.5 | 1.75 | 2.0 | (number & Record) export type Flip = 'normal' | 'horizontal' | 'vertical' | (string & Record) @@ -352,15 +346,6 @@ export declare class Player { reset(): void } - - - - - - - - - export type CustomType = | 'flv' | 'm3u8' @@ -769,9 +754,6 @@ declare module 'artplayer/i18n/*' { export default lang } - - - export type Bar = 'loaded' | 'played' | 'hover' export interface Events { @@ -995,8 +977,6 @@ export interface Config { ] } - - export interface Selector { /** * Whether the default is selected @@ -1128,18 +1108,6 @@ export interface ComponentOption { onSelect?: (this: Artplayer, selector: Selector, element: HTMLElement, event: Event) => void } - - - - - - - - - - - - export type { Config, Events, @@ -1329,5 +1297,5 @@ export default class Artplayer extends Player { } & Record } -export = Artplayer; -export as namespace Artplayer; \ No newline at end of file +export = Artplayer +export as namespace Artplayer; diff --git a/packages/artplayer-plugin-audio-track/src/index.js b/packages/artplayer-plugin-audio-track/src/index.js index 1122e6e8f..4f261c9d5 100644 --- a/packages/artplayer-plugin-audio-track/src/index.js +++ b/packages/artplayer-plugin-audio-track/src/index.js @@ -1,19 +1,15 @@ export default function artplayerPluginAudioTrack(option) { return (art) => { - const { url, offset = 0, sync = 0.3 } = option - - if (!url) { - return { - name: 'artplayerPluginAudioTrack', - } - } + let { url, offset = 0, sync = 0.3 } = option const audio = new Audio() - audio.src = url audio.preload = 'auto' + if (url) { + audio.src = url + } function syncAudio() { - if (!art.video) + if (!art.video || !url) return const videoTime = art.currentTime @@ -25,6 +21,8 @@ export default function artplayerPluginAudioTrack(option) { } art.on('play', () => { + if (!url) + return syncAudio() audio.play().catch((err) => { console.warn(err) @@ -60,6 +58,24 @@ export default function artplayerPluginAudioTrack(option) { audio.load() }) + function update(newOption) { + if (newOption.url && newOption.url !== url) { + url = newOption.url + audio.src = url + if (art.playing) { + audio.play().catch(err => console.warn(err)) + } + } + + if (newOption.offset !== undefined) { + offset = newOption.offset + } + + if (newOption.sync !== undefined) { + sync = newOption.sync + } + } + audio.volume = art.volume audio.muted = art.muted audio.playbackRate = art.video?.playbackRate || 1 @@ -67,6 +83,7 @@ export default function artplayerPluginAudioTrack(option) { return { name: 'artplayerPluginAudioTrack', audio, + update, } } } diff --git a/packages/artplayer-plugin-audio-track/types/artplayer-plugin-audio-track.d.ts b/packages/artplayer-plugin-audio-track/types/artplayer-plugin-audio-track.d.ts index c9ff7ba54..5a6adc6db 100644 --- a/packages/artplayer-plugin-audio-track/types/artplayer-plugin-audio-track.d.ts +++ b/packages/artplayer-plugin-audio-track/types/artplayer-plugin-audio-track.d.ts @@ -27,6 +27,11 @@ interface Result { * The audio element */ audio: HTMLAudioElement + + /** + * Update option + */ + update: (option: Option) => void } declare const artplayerPluginAudioTrack: (option: Option) => (art: Artplayer) => Result