Html 5オーディオ要素の現在の時間とその要素の継続時間を表示したいと思います。私はインターネットを見ていましたが、音声ファイルの長さと現在の時刻を表示できる機能的なスクリプトが見つかりません。 1:35/3:20。
誰もアイデアを持っています:)?
ここに簡単な使用法があります。 html5要素はまだ開発中であるため、何でも変更できます。
audio = document.getElementsByTagName("audio")[0];
//functions
audio.load();
audio.play();
audio.pause();
//properties
audio.currentSrc
audio.currentTime
audio.duration
ここにリファレンスがあります HTML5 Audio
オーディオの再生中にcurrentTimeを取得するには、timeupdate
イベントをアタッチし、コールバック関数内で現在の時刻を更新する必要があります。
Audio.duration()を使用する場合。数秒で結果が得られます。これを数分と数秒で変更するだけです。コードのデモはこちらです。お役に立てば幸いです。
song.addEventListener('timeupdate',function (){
var duration = song.duration; //song is object of audio. song= new Audio();
var sec= new Number();
var min= new Number();
sec = Math.floor( duration );
min = Math.floor( sec / 60 );
min = min >= 10 ? min : '0' + min;
sec = Math.floor( sec % 60 );
sec = sec >= 10 ? sec : '0' + sec;
$("#total_duration").html(min + ":"+ sec); //Id where i have to print the total duration of song.
});
このコードは確実に全期間にわたって機能します。現在の時刻を取得するには、song.currentTime;
代わりに song.duration;
コード全体は同じままです。
ES6
const audio = new Audio();
audio.src = document.querySelector('#audio').src;
audio.play();
audio.addEventListener('timeupdate', (event) => {
const currentTime = Math.floor(audio.currentTime);
const duration = Math.floor(audio.duration);
}, false);
あなたのjqueryでtimeupdateを実装しようとしている人のために。
<audio id="myAudio">
<source src='test.mp3' type="audio/mp3" />
</audio>
$("audio#myAudio").get(0).addEventListener("timeupdate",function(){
// do your stuff here
});
オーディオファイルの長さを見つけるのは簡単です!:
<html>
<head>
</head>
<body>
<audio controls="" id="audio">
<source src="audio.mp3">
</audio>
<button id="button">
<p id="p"></p>
GET LENGTH OF AUDIO
</button>
<script>
var MYAUDIO = document.getElementById(audio);
var MYBUTTON = document.getElementById(button);
var PARA = document.getElementById(p);
function getAudioLength() {
PARA.innerHTML = duration.MYAUDIO
}
MYBUTTON.addEventListener(click, getAudioLength);
</script>
</body>
</html>
TypeScriptの場合:
formatTime(seconds: number): string {
let minutes: any = Math.floor(seconds / 60);
let secs: any = Math.floor(seconds % 60);
if (minutes < 10) {
minutes = '0' + minutes;
}
if (secs < 10) {
secs = '0' + secs;
}
return minutes + ':' + secs;
}
マジックナンバーを定数に置き換えることを忘れないでください。一例です。