IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Jouer avec de l'audio


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut Jouer avec de l'audio
    Bonjour à tous,
    Je voudrais permettre à un utilisateur de changer de musique lors d'une action.

    Je dispose du code suivant dans ma page html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <audio controls id="webaudioplayer" autoplay>
        <source id="audio-mp3" src="audio/1.mp3" type="audio/mpeg">
        <source id="audio-wav" src="audio/1.wav" type="audio/wav">
        Your browser does not support the audio tag.
    </audio>

    l'idée est d'utiliser mon bout de code javascript pour modifier les contenus des sources pour relancer une autre musique à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var audio = {
        sounds:Array('audio/1','audio/2','audio/3','audio/4'),
        now:0,
        play:function(){
        	$("#audio-mp3").attr("src",'audio/2.mp3');
        	$("#audio-wav").attr("src",'audio/2.wav');
        	var audio = $("#webaudioplayer");
        	//audio.play();
        },
        next:function(){
          //todo
        }
    }
    Pour l'instant, l'idée est juste de passer à la chanson 2, mais ma console me retourne l'erreur
    TypeError: Object [object Object] has no method 'play'
    Une idée ?

  2. #2
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    bonjour à toi

    pour information on ne met pas d'id au balises sources
    ensuite on charge l'audio en javascript en fonction du format supporté par le navigateur directement dans l'objet audio
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(document.getElementById('webaudioplayer').canPlayType('audio/mpeg'))
    {$("#webaudioplayer").attr("src",'audio/2.mp3');}
    else
    {$("#webaudioplayer").attr("src",'audio/2.ogg');}

    quand au format wav je l'ai jamais vus dans les listes de support
    Rien, je n'ai plus rien de pertinent à ajouter

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut
    Pour le wav, j'avais trouvé ici la liste des types supportés en fonction des navigateurs (pour info)

    http://www.w3schools.com/tags/tag_audio.asp

    Je test cela, merci

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur Junior
    Inscrit en
    Septembre 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Junior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 170
    Points : 177
    Points
    177
    Par défaut
    ça fonctionne, merci !

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    TypeError: Object [object Object] has no method 'play'
    Quant à cette erreur, elle est due au fait que dans ton code, la variable audio est un objet jQuery et non un objet du DOM du type HTMLAudioElement. Elle ne possède donc pas, comme l'indique le message, de méthode play().
    Tu peux faire à la place (parmi une multitude de solutions possibles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var audio = $("#webaudioplayer");
    audio[0].play();
    Citation Envoyé par TiranusKBX
    pour information on ne met pas d'id au balises sources
    Rien ne l'interdit. id est un attribut générique et toutes les balises peuvent avoir un id.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Rien ne l'interdit. id est un attribut générique et toutes les balises peuvent avoir un id.
    peut être mais dès que tu change la source inutile d’espérer que le dom te les retournent ^^
    Rien, je n'ai plus rien de pertinent à ajouter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. jouer avec les couleur des lignes de diplaytable
    Par fouyou dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2007, 10h01
  2. Problème avec des fichiers audios
    Par ksper92 dans le forum Flash
    Réponses: 1
    Dernier message: 24/01/2007, 18h38
  3. Une bibliothèque pour faire autre chose que jouer avec ma carte graphique ?
    Par Neilos dans le forum Coprocesseurs et calcul hétérogène
    Réponses: 7
    Dernier message: 09/11/2006, 09h51
  4. Réponses: 3
    Dernier message: 08/11/2006, 13h06
  5. [VBA-E]Jouer avec les chaines de caractere contenu ds cellu
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2006, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo