如何使用 jquery 获取音频当前时间并显示消息

Posted

技术标签:

【中文标题】如何使用 jquery 获取音频当前时间并显示消息【英文标题】:How to get the audio current time and show message using jquery 【发布时间】:2015-12-11 03:17:32 【问题描述】:

我需要帮助。我想获取html5音频当前时间并显示指定时间的消息。

我从互联网上提取了一些代码。请看下面的代码。

HTML

<audio id="track" controls><source src="[sourceToAudioFile]" type="audio/mpeg"></audio> 
<input type="text" id="currentTime">
<div id="message"></div>

JAVASCRIPT:

<script type="text/javascript">
        $(document).ready(function () 

            var audio = document.getElementById('track');
            audio.addEventListener('timeupdate', function () 
                var currentTimeS = audio.currentTime;
                //console.log(currentTimeMs);

                $('#currentTime').val(currentTimeS);

                var current = $('#currentTime').val();
                var timeset = 1.694568; //this might be changed

                $('#timeset').text(current);

                if (current === timeset) 
                    $("#message").text('Equal time!');
                

            , false);

        );

    </script>

我的问题是我无法在指定的时间显示消息。

这是我的工作示例。请检查。

jsFiddle

知道这段代码有什么问题吗?我真的很感谢你的帮助。非常感谢您。

【问题讨论】:

这段代码遇到了什么问题? @Rohit416 我无法显示指定时间的消息。 【参考方案1】:

我对代码的JavaScript 部分进行了一些更改..

<script type="text/javascript">
    $(document).ready(function () 
        var audio = document.getElementById('track');
        audio.addEventListener('timeupdate', function () 
            var timeSet = 1.694568;
            var _currentTime = parseFloat(audio.currentTime);                

            $('#currentTime').val(_currentTime);
            $('#timeset').text(_currentTime);

            if (_currentTime === timeSet) 
                $("#message").text('Equal time!');
            

        , false);

    );
</script>

让我知道它是否适合您。此外,这里没有必要使用parseFloat(),因为您已经在timeSet 中设置了正确的小数格式的值。我添加它是为了确保比较始终有效,因为 === 运算符不会进行类型转换。如果将小数值写成字符串,即"1.694568",会更方便。

更新:

要检查精确值10 秒,您可以使用Math.round() 将结果与currentTime 进行比较,这比将其与像1.694568 之类的小数值比较容易,因为@987654334 的间隔步长@。

$(document).ready(function () 
    var audio = document.getElementById('track');
    audio.addEventListener('timeupdate', function () 
      var timeSet = 10;
      var _currentTime = Math.round(audio.currentTime);

      $('#currentTime').val(_currentTime);
      $('#timeset').text(_currentTime);

      if (_currentTime === timeSet) 
        $("#message").text('Equal time!');
      
    , false);
);

这里是updated fiddle

【讨论】:

我检查了控制台语句,似乎_currentTime 从未与timeSet 的确切值匹配,这可能是由于搜索栏的间隔步骤。 否则代码没有任何问题,但几乎不需要修改,因为必须匹配 timeSet 的确切小数值。请寻找资源。检查console output in this updated fiddle。 那么,我怎样才能使它与音频的当前时间相等?如果有人还可以解决如何使其成为精确的秒数,则似乎存在当前时间的十进制值。非常感谢您的帮助。 我想要一个确切的数字,比如 10 秒。实际上它会根据我喜欢设置而改变。【参考方案2】:

@Rohit416 非常感谢你帮助我解决这个问题。 我添加了Math.round,这样我就可以获得整数的确切值来显示消息。

 $(document).ready(function () 
        var audio = document.getElementById('track');
        audio.addEventListener('timeupdate', function () 
          var timeSet = 5;
          var _currentTime = Math.round(audio.currentTime);

          $('#currentTime').val(_currentTime);
          $('#timeset').text(_currentTime);

          if (_currentTime === timeSet) 
            $("#message").text('Equal time!');
          else
            $("#message").text('NO');
          

        , false);

    );

这是更新后的工作示例:UPDATED Fiddle

【讨论】:

以上是关于如何使用 jquery 获取音频当前时间并显示消息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 从 asp.net 列表框中仅获取当前选定的选项

JQuery 获取/设置当前时间“广播电台”

如何获取在 Chrome 标签中播放的音频名称

如何获取当前的经纬度并在吐司中显示?

请问如何通过jquery获取页面内容的高度?

从当前在 iOS 设备上播放的音乐中获取音频功率级别