【问题标题】:Problems with stopping html5 audio and restarting playback停止 html5 音频并重新开始播放的问题
【发布时间】:2011-03-30 08:37:03
【问题描述】:

如果我使用 .pause() 方法停止音频播放,然后设置 .currentTime=0 并最后再次调用 .play() 方法,我会听到划痕...有时听起来播放从位置 1 秒开始,但应该开始在0!我的代码:

HTML:

<audio id="sound" preload="auto" autobuffer>
    <source src="a.mp3" />
</audio>

JS:

var sound = $('#sound')[0];

function playSound(){
    sound.pause();
    sound.currentTime = 0;
    sound.play();
}

如果我调用函数事件驱动,有时会发生上述错误。

有什么想法吗?谢谢。

【问题讨论】:

    标签: jquery html audio html5-audio


    【解决方案1】:

    代码看起来不错。你试过不同的浏览器吗? HTML5 尚未最终确定,浏览器供应商正在着手实施。也许是一个错误?

    【讨论】:

    • 已经在 FF4 Opera Safari 和 Chrome 中尝试过 :) 我注意到,我有同样的错误@jPlayer,所以在我看来,它是一个错误 atm。但我准备好接受相反的说法了:)
    • 对于 Chrome,请尝试使用最新的(截至 2011 年 4 月 21 日为 12.0.742.0)开发频道版本。如果问题仍然存在,请在crbug.com 提出错误
    【解决方案2】:

    试试这个...您实际上并没有在代码中调用事件。你称之为事件,一个全新的世界向你敞开,你可以用这个物体做什么......

    我在这里做的是在用户单击音频元素并开始播放时启动计时器。然后,我每隔 1 秒检查一次时间,看看是否已经过了 45 秒。如果有,这是我正在展示的音频的试用版,会将 currentTime 重置为 0,然后暂停视频,使其不会继续循环播放。然后我清除间隔。

    你所做的和我所做的区别就在于函数参数中的那个小“e”。如果您确实在脚本中的某处放置了console.log(e);,然后打开 Firebug 或任何其他基于 Web 的控制台,您可以单击返回的值并查看您可以从事件对象访问的所有信息。从那里开始,您几乎可以让音频播放器为您冲杯咖啡……好吧,也许不是这样,但您可以让它服从您的意愿。

    $('audio').click(function(e) {
        window.setInterval(function(){ 
          if(e.currentTarget['currentTime'] > 45){ 
             $(e.currentTarget['currentTime'] = 0); 
             $(e.currentTarget.pause()); 
             clearInterval(); 
           } 
         }, 1000); 
    });
    

    ================================================ ==========================

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多