自动播放音频播放列表 SoundManager2 bar-ui

Posted

技术标签:

【中文标题】自动播放音频播放列表 SoundManager2 bar-ui【英文标题】:Autoplay audio playlist SoundManager2 bar-ui 【发布时间】:2015-02-10 22:03:26 【问题描述】:

** 已编辑 **

请参阅下面 Jon Black 的答案作为正确的解决方案...

我正在尝试在网站上为客户端使用 SoundManager2 html5 音频播放器,但是客户端坚持 .mp3 播放列表 自动播放 从轨道 1 开始并循环播放其余部分轨道。

原始脚本(网站上的 soundmanager2.js)有一个 autoPlay: false 选项,但将其更改为 true 没有任何效果。

这是我创建的演示网站的链接,该网站使用 SoundManager2 的 bar-ui(这是客户想要使用的样式)和在后台自动播放 .mp3 曲目的脚本:website with working demo

如您所见(和所听到),背景音频自动播放得很好,但不像预期的那样通过条形音箱播放。如果单击“播放”或单击轨道菜单中的播放列表项,则新单击的音频只会在背景音频上播放,这是不需要的。我需要播放列表 audi 自动播放,并能够通过条形音箱本身播放、暂停和选择不同的曲目。

Here is the link to original SoundManager2 project website for further info。

我希望有人能告诉我如何创建一个函数或提供一个脚本,以允许播放列表在页面加载时通过音频播放器 UI 自动播放。

我进行了大量搜索,并尝试编写和拼凑脚本,但似乎无法使其正常工作!所以,我转向 SO 上的天才。

提前感谢您的帮助!

【问题讨论】:

尝试在 bar-ui.js 的第 794 行添加 'autoPlay: true,'。 @PatrickGunderson - 抱歉,但整个代码都是问题所在......我似乎无法让 autoPlay:true 正常播放和工作。我尝试设置文档中提供的功能,并在许多地方添加 autoPlay:true,但无济于事。 @jmiraglia 尝试将 'autoPlay: true,' 添加到 bar-ui.js 的第 794 行,但仍然不行...不过感谢您的建议。我真的很感谢帮助家伙 【参考方案1】:

上面的解决方案对我不起作用。 它改变了按钮状态,但文件不播放。我在 chrome 控制台中得到这个带下划线的错误

sound0: play(): Loading - attempting to play...
bar-ui.js:125 Uncaught TypeError: Cannot read property 'on' of undefined

这里显示自动播放是真的。

Object url: "http://freshly-ground.com/data/audio/sm2/SonReal%20-%20LA%20%28Prod%20Chin%20Injetti%29.mp3", volume: 100, autoLoad: false, autoPlay: true, from: null…

【讨论】:

那么解决方法是什么??【参考方案2】:

我想出了一个快速简便的方法来解决您的困境。您只需要在init()line 1378bar-ui.js 附近调用之后添加这个简单的代码。

    soundObject = makeSound(playlistController.getURL());
    soundObject.togglePause();

init() 设置播放器后,您只需将播放列表中的第一个声音(makeSound(playlistController.getURL())排队,然后播放(togglePause())。

【讨论】:

我不能投票(显然,这个网站对网站来说太新了,但这非常有效,并且已被标记为正确的解决方案!非常感谢您的时间和专业知识 Jon Black 以及所有分享答案的人。 【参考方案3】:

要清楚 Jon 的解决方案: 将他提到的两行添加到 bar-ui.js 并插入到您的 soundManager.setup

onready: function() 
makeSound(playlistController.getURL());
togglePause();

希望这会有所帮助。

【讨论】:

您好 John V,我不确定您要在哪里添加您提供的代码,但我只按照 Jon Black 的建议进行了操作,并且完美无缺。【参考方案4】:

当我尝试 Jon Black 的解决方案时,我遇到了与 Oj Obasi 相同的错误,因此我没有在 init() 调用之后立即添加这两行,而是在导出声明之后添加它们并且效果很好。 这是我所做的编辑:

init(); // the init call

    exports = 
      // Per-instance events: window.sm2BarPlayers[0].on =  ...  etc. See global players.on example above for reference.
      on: null,
      actions: actions,
      dom: dom,
      playlistController: playlistController
    ;
    soundObject = makeSound(playlistController.getURL()); // these two lines make it autoplays the playlist from beginning
    soundObject.togglePause(); // these two lines make it autoplays the playlist from beginning
    return exports;

【讨论】:

如果您在帖子中包含一部分代码,使其独立于其他答案,那就太好了 - from Review 完成。希望这会有所帮助。【参考方案5】:

要使用 SM2 播放器自动播放单个文件,(不是播放列表)在页面加载时包括以下内容:

sm2BarPlayers[0].actions.play();

【讨论】:

以上是关于自动播放音频播放列表 SoundManager2 bar-ui的主要内容,如果未能解决你的问题,请参考以下文章

SoundManager2 onid3() 未触发

如何构建我自己的嵌入式音频播放器//不是纯 Flash [关闭]

SoundManager2 - 停止声音时的失真

声音管理器 2 和播放列表自动播放下一首歌曲不起作用

Soundmanager 2:播放另一个声音时停止播放声音

jq页面加载事件,页面加载完调用音频自动播放怎么写?