加载声音文件暂停,然后在几秒钟后开始播放

时间:2011-04-26 07:20:17

标签: javascript audio

我使用setTimeout在8秒后播放音频文件:

   setTimeout(function() {
        document.getElementById('delayed_play').style.display = 'block';
    }, 8 * 1000);   
<div id="delayed_play">

问题是我需要它在8秒后完全启动,而是文件开始加载并根据连接速度花费不同的时间。

有没有办法让文件加载暂停并告诉它在8秒开始?

这是包含脚本其余部分的音频文件:

    <script type="text/javascript">
  document.getElementById('delayed_play').style.display = 'none';
    </script>

<object height="0" width="40%">
<embed allowscriptaccess="always" height="0" src="http://player.soundcloud.com/player.swf?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F14151193%3Fsecret_token%3Ds-OVmfN&amp;show_comments=false&amp;auto_play=true&amp;color=ff7700" type="application/x-shockwave-flash" width="100%"></embed>
</object>

由于

1 个答案:

答案 0 :(得分:1)

我不熟悉API,但这是我会尝试的:

  1. 使用该页面加载播放器,但禁用自动播放(我猜,URL中应该有参数)
  2. 为页面加载事件设置一个计时器,该事件执行调用相应API函数的函数以启动播放器。
  3. 这需要知道API,该API应该在网站上有文档。


    有关播放器的文档可在http://developers.soundcloud.com/docs/widget找到。

      

    SoundCloud播放器可通过URL参数进行自定义,并可通过JavaScript API编写脚本。

    感兴趣的参数是 auto_play ,可以禁用自动播放声音。

    您可以按照“Widget方法”部分所述操作播放器:

      

    api_play()播放器从0开始播放或从上一个暂停的曲目位置开始播放。如果小部件包含多个轨道,它将开始播放第一个轨道。

    您可以将代码挂钩到“事件类型”部分中描述的各种事件。

      

    onPlayerReady 当窗口小部件加载了数据并准备接受外部调用时触发。每个小部件实例仅触发一次。

         

    onMediaBuffering 当小部件仍在缓冲时触发。 data (第二个参数)包含属性 percent 。这也意味着你不能完全在轨道上寻找

    您必须测试缓冲行为以了解如何设置事件侦听器。您可能还需要使用 onMediaDoneBuffering 事件。