HTML5 Audio: Comment lire uniquement une partie sélectionnée d'un fichier audio (sprite audio)?
Je suis en train de travailler sur un iOS métronome web app. Depuis le navigateur safari mobile ne peut jouer un son à un momentje suis d'essayer de créer une piste audio "sprite' - où je peux utiliser les différents segments d'une seule piste audio pour générer des sons différents. J'ai un 1 deuxième clip avec 2 demi-seconde sons.
<audio id="sample" src="sounds.mp3"></audio>
<a href="javascript:play1();">Play1</a>
<a href="javascript:play2();">Play2</a>
<a href="javascript:pauseAudio();">Pause</a>
<script>
var audio = document.getElementById('click');
function play1(){
audio.currentTime = 0;
audio.play();
//This is the problem area
audio.addEventListener('timeupdate', function (){
if (currentTime >= 0.5) {
audio.pause();
}
}, false);
}
function play2(){
audio.currentTime = 0.5;
audio.play();
}
function pause(){
audio.pause();
}
</script>
Voir sur JSFiddle.
Comme vous pouvez le voir, j'ai tenté d'utiliser le "timeupdate' événement (jPlayer exemple) avec en vain.
J'ai vu Remy Sharp post sur audio spritesmais (A) je n'ai pas réussi à le faire fonctionner pour moi, et (B) je préfère rester à l'écart à partir d'une bibliothèque de dépendance.
Des idées? Merci d'avance pour votre aide!
Mise à jour
Je maintenant avoir de travail à l'aide de setInterval
:
function play1(){
audio.currentTime = 0;
audio.play();
int = setInterval(function() {
if (audio.currentTime > 0.4) {
audio.pause();
clearInterval(int);
}
}, 10);
}
function play2(){
clearInterval(int);
audio.currentTime = 0.5;
audio.play();
}
Il y a quelques problèmes avec la séquence et nettoyage des intervalles, mais pour mon but, cela semble fonctionner.
Merci!
P. S. Si quelqu'un a une solution pour cela, il pourrait être utilisé dans les Jeux et l'Interface Audio FX.
source d'informationauteur Josiah
Vous devez vous connecter pour publier un commentaire.
Je pense que il ya un couple de problèmes ici.
Tout d'abord, vous êtes en train d'ajouter un écouteur d'événement à chaque fois que l'utilisateur clique sur Play 1.
Aussi, je pense
devrait être
Cela fonctionne aussi: