【问题标题】:How to set currentTime in an <audio> file given hh:mm:ss?如何在给定 hh:mm:ss 的 <audio> 文件中设置 currentTime?
【发布时间】:2019-09-03 23:26:11
【问题描述】:

我每 3 分钟有 2500 个带有时间戳的成绩单。我希望时间戳跳转到音频文件中的时间。

我正在使用 Javascript 和 HTML5,代码片段可以正常工作,但不是全部。

<script>
function initAudio(){
    var speedlist = document.getElementById("speedlist");
    speedlist.addEventListener("change",changeSpeed);

function changeSpeed(event){
    myAudio.playbackRate = event.target.value;
                   }
function setCurrentTime(event){
    myAudio.currentTime = event.target.value;
                   }
function hmsToSecondsOnly(str) {
    var p = str.split(':'),
        s = 0, m = 1;
    while (p.length > 0) {
        s += m * parseInt(p.pop(), 10);
        m *= 60;
    }
    return s;
}
            }
window.addEventListener("load", initAudio);
</script>
<font size="2px">&nbsp;&nbsp; .5 x
<input id="speedlist" type="range" value="1" min="0.5" max="2.5" step="0.1" width="100px"> 2.5 x&nbsp;&nbsp;</font>
<img title="Reset Audio Speed to 1 x" src="https://pocketcollege.com/Speed.png" onclick="myAudio.playbackRate = 1"></p>

<audio id="myAudio" controls preload="metadata" style="width:100%;"> 
<source src="https://pocketcollege.com/mp3/RR100A1.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>

<input type="button" value="[3:13]" onclick="myAudio.currentTime=200">

<input type="button" value="[6:27]" onclick="setCurrentTime(hmsToSecondsOnly('6:27'))">

第一个按钮起作用并将时间移动到 3 分 20 秒。第二个按钮无效。

【问题讨论】:

    标签: javascript html audio current-time


    【解决方案1】:

    所以我让它工作了。我不得不分离出 hmsToSecondOnly 函数并更改我的调用方式:

    <script>
    function initAudio(){
        var speedlist = document.getElementById("speedlist");
        speedlist.addEventListener("change",changeSpeed);
    function changeSpeed(event){
        myAudio.playbackRate = event.target.value;
                       }
    function setCurrentTime(event){
        myAudio.currentTime = event.target.value;
                       }
                }
    window.addEventListener("load", initAudio);
    
    function hmsToSecondsOnly(str) {
        var p = str.split(':'),
            s = 0, m = 1;
    
        while (p.length > 0) {
            s += m * parseInt(p.pop(), 10);
            m *= 60;
        }
    
        return s;
    }
    </script>
    
    <input type="button" value="[6:27]" onclick="myAudio.currentTime=hmsToSecondsOnly('6:27')">
    

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2018-02-28
      相关资源
      最近更新 更多