mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-27 01:21:20 -08:00
feat: add update method to artplayerPluginAudioTrack for dynamic audio options
This commit is contained in:
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
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user