feat: add update method to artplayerPluginAudioTrack for dynamic audio options

This commit is contained in:
Harvey Zhao committed 2026-01-03 14:03:26 +08:00
1 parent e559d3bc6f
commit 62b4be9d82
2 files changed
+16 -8

No files matched your search

@@ -213,20 +213,18 @@ parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "default", ()=>artplayerPluginAudioTrack);
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) return;
if (!art.video || !url) return;
const videoTime = art.currentTime;
const targetTime = videoTime + offset;
if (Math.abs(audio.currentTime - targetTime) > sync) audio.currentTime = targetTime;
}
art.on('play', ()=>{
if (!url) return;
syncAudio();
audio.play().catch((err)=>{
console.warn(err);
@@ -253,12 +251,22 @@ function artplayerPluginAudioTrack(option) {
audio.src = '';
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;
return {
name: 'artplayerPluginAudioTrack',
audio
audio,
update
};
};
}