获取/设置所有音频实例的全局音量

时间:2015-12-14 17:12:25

标签: javascript html5 html5-audio jplayer

我正在使用jPlayer在我的网站上播放音频文件。

我创建了 mix ,以便在两首歌曲之间平滑过渡。

混合 =在减小第一个播放器的音量时,我正在增加另一个播放器的音量。

我正在寻找一个同时影响两个玩家的全局音量属性,这样我就可以相对于当前音量状态改变音量,即使它们处于混音中间。

我尝试使用 Jplayer 文档中描述的globalVolume,但我不明白我该怎么做并设置它。

我确信有更优雅的方式来访问Audio 并请求globalVolume或更改它。

MDN上获取实例卷的唯一方法是

var vid = document.getElementById("myAudio");
vid.volume = 0.2;

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以通过调用构造函数$('#myPlayerId').jPlayer({option: 'value'});来创建jPlayer实例。

其中一个选项是volume,它将初始音量定义为0到1之间的值:$('#myPlayerId').jPlayer({volume: '0.8'});

另一个选项是globalVolume。这是一个布尔选项,可以使volume选项与启用了globalVolume选项的其他jPlayer实例共享。 Check out this demo page举个示例,不要忘记使用该卷来查看此选项的效果。

无论如何,globalVolume属性并不是您想要创建交叉淡入淡出效果(或实现一种方式混合一个或多个)的方式音频流)。

我要做的是听一个jPlayer event,更具体地说是当实例的音量发生变化时被触发的{{3}}:$.jPlayer.event.volumechange。例如:

// [...] Code to create jPlayer instances

var handleOnVolumeChange = function handleOnVolumeChange (event) {
    var targetElement = event.srcElement || event.target;
    var playerId = targetElement.id;

    // event.jPlayer contains jPlayer information
    // event.jPlayer.options: The volume and muted values are maintained here along with all the other options.
};

$('#playerOneId').bind($.jPlayer.event.volumechange, handleOnVolumeChange);
$('#playerTwoId').bind($.jPlayer.event.volumechange, handleOnVolumeChange);

在处理事件的功能中,你应该能够找出哪个玩家解雇它并做出相应的反应(例如,根据你定义的比例改变一个或多个其他玩家的音量)。

这对你有用吗?