javascript - 如何在给定hh:mm:ss的<audio>文件中设置currentTime?

标签 javascript html audio current-time

我每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秒。第二个按钮无效。

最佳答案

这样我就可以工作了。我必须分离出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')">

关于javascript - 如何在给定hh:mm:ss的<audio>文件中设置currentTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779752/

相关文章:

javascript - 根据浏览器运行不同的 JavaScript

javascript - javascript/jquery "hate"负数是否作为 id 名称的一部分?

javascript - HTML5 视频无法在 Chrome 中加载,但在打开开发者控制台时可以工作

安卓录音音量表

android - 音频参数

javascript - 在10秒钟后开始播放音频,可以使用javascript吗?

javascript - 如何显示这种类型的位模式?

javascript - 为什么 "console.log()"在这个网站上不起作用?

javascript - typescript HTML 显示

android - Android 1.5 上的 Gears 或 HTML5 Location API