Je voudrais afficher l'heure actuelle d'un élément audio html 5 et la durée de cet élément. Je cherche sur Internet mais je ne trouve pas de script fonctionnel qui me permette d'afficher la durée des fichiers audio et l'heure actuelle, par exemple. 1:35/3:20.
Quelqu'un a une idée :)?
Voici un exemple:
<audio id="track" src="http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg"
ontimeupdate="document.getElementById('tracktime').innerHTML = Math.floor(this.currentTime) + ' / ' + Math.floor(this.duration);">
<p>Your browser does not support the audio element</p>
</audio>
<span id="tracktime">0 / 0</span>
<button onclick="document.getElementById('track').play();">Play</button>
Cela devrait fonctionner dans Firefox et Chrome. Pour les autres navigateurs, vous devrez probablement ajouter des codages alternatifs.
voici un usage simple. Gardez à l'esprit les éléments html5 sont toujours en cours, donc tout peut changer:
audio = document.getElementsByTagName("audio")[0];
//functions
audio.load();
audio.play();
audio.pause();
//properties
audio.currentSrc
audio.currentTime
audio.duration
voici la référence HTML5 Audio
pour obtenir l'heure en cours pendant la lecture, vous devez associer l'événement timeupdate
et mettre à jour l'heure actuelle dans la fonction de rappel.
la version de robertc fonctionnera correctement, à l'exception du fait qu'elle ne transforme pas le nombre de secondes que vous obtenez de math.floor()
en valeurs de temps appropriées.
Voici ma fonction appelée quand ontimeupdate
est appelé:
<audio id='audioTrack' ontimeupdate='updateTrackTime(this);'>
Audio tag not supported in this browser</audio>
<script>
function updateTrackTime(track){
var currTimeDiv = document.getElementById('currentTime');
var durationDiv = document.getElementById('duration');
var currTime = Math.floor(track.currentTime).toString();
var duration = Math.floor(track.duration).toString();
currTimeDiv.innerHTML = formatSecondsAsTime(currTime);
if (isNaN(duration)){
durationDiv.innerHTML = '00:00';
}
else{
durationDiv.innerHTML = formatSecondsAsTime(duration);
}
}
</script>
J'ai modifié formatSecondsAsTime()
à partir de quelque chose que j'ai trouvé ici :
function formatSecondsAsTime(secs, format) {
var hr = Math.floor(secs / 3600);
var min = Math.floor((secs - (hr * 3600))/60);
var sec = Math.floor(secs - (hr * 3600) - (min * 60));
if (min < 10){
min = "0" + min;
}
if (sec < 10){
sec = "0" + sec;
}
return min + ':' + sec;
}
Lorsque vous utilisez audio.duration (). Cela vous donnera un résultat en quelques secondes. Il vous suffit de changer cela en minutes et en secondes. La démo de Code est là, espérons qu'elle vous aidera.
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.
});
Ce code fonctionnera définitivement pour une durée totale. Pour obtenir l'heure actuelle, il vous suffit d'utiliser song.currentTime;
au lieu de song.duration;
Le code entier restera identique.
pour ceux qui cherchent à implémenter timeupdate dans votre jQuery.
<audio id="myAudio">
<source src='test.mp3' type="audio/mp3" />
</audio>
$("audio#myAudio").get(0).addEventListener("timeupdate",function(){
// do your stuff here
});
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);
trouver la longueur d'un fichier audio est simple!
<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>
Sur 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;
}
N'oubliez pas de remplacer les nombres magiques par des constantes. C'est un exemple.