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

GWT et Vaadin Java Discussion :

GWT et l'audio


Sujet :

GWT et Vaadin Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut GWT et l'audio HTML5 Media
    Bonjour,

    J'ai quelques questions concernant la prise en charge de l'audio sous GWT.

    J'ai tester la bibliothèque GWT-Voice, ok pas de soucis le son fonctionne avec le plug-in QuickTime (c'est du wav que je relis), mais j'ai besoin d'information tel que la durée de la piste, la position, etc...

    Y'a d'autre bibliothèque qui fonctionne avec Sound Engine mais je veux pas mettre du flash...(si j'ai bien saisie le fonctionnement c'est un wrapper de flash)

    J'ai essayer de chercher du côté du plug-in VLC, en insérant une balise embed machin truc bidule . Mais malheureusement, il y a beaucoup de bug chez moi en tout cas, avec le lecteur qui n'apparait pas ou seulement en noir...

    Du coup je me suis dis, je vais triché un peu en insérant une balise HTML5 dans ma page avec du code natif en javascript pour piloter tout ça.

    Cependant, vu que ce merveilleux compilateur optimise à mort, les noms de fonctions déclenchées par des événements de ma balise genre un "onTimeUpdate" ne sont pas définies car elles sont renommées.

    Je voudrais savoir si il est possible de désactivé l'optimisation sur le code écrit en natif ??

    Ou si vous auriez une autre solution à me proposer pour exploiter mon audio ?

    Merci d'avance pour les tuyaux

  2. #2
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Salut,

    Ca dépend si tu as besoin de piloter le son par des boutons GWT ou si c'est juste pour ajouter un peu de son.

    Dans le second cas, je mettrais du Html5 / Javascript directement dans la page application.Html. Le compilo GWT ni touche pas à ce fichier.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Disons que j'ai besoin de la position audio, donc 1er cas, parce que je trace quelques choses en fonction de ça.

    [HS]
    J'ai déjà développer une application similaire en Ajax avec un peu de Php pour ouvrir un fichier, ça marche pas mal malgré que ça soit pas très propre. J'ai fait de même avec Adobe Flex, maintenant c'est autour de GWT. ça va beaucoup moins bien
    [/HS]

  4. #4
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Si tu veux faire quelques chose de propre il va falloir que tu utilise JSNI.

    regarde par là : http://www.gwt-france.fr/gwt-et-le-javascript-jsni

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci pour le lien pvoncken, je vais étudier tout ça
    En plus en français

    edit : une balise peut appeler une fonction ? je ne vois ça nul part, peut être que je devrais implémenter un écouteur sur les objets ça serait peut être plus simple, mais pour le moment je ne sais pas faire...

    Et dans les fonctions écrit en natif, on peut passer des objets en paramètre ?
    De manière à ce que je puisse caler la position de mon slider sur la position de mon audio ?

    Je sais je suis exigeant mais je crois que je vais être limiter avec GWT dommage

  6. #6
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    N'ayant pas réalisé cette fonctionnalité je ne peux pas te donner plus de détails technique.

    Par contre je sais qu'en passant par JSNI avec GWt tu n'as aucune limite.

    La solution à ton problème se trouve dans JSNI, cherche la dedans je suis sur que tu trouveras. Et ca n'est pas bien compliquer je pense.

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ok, je vais voir comment je peut me bidouiller ça.

    En tout cas merci ! Je posterais mes feelback

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Pour les écouteurs sur la balise ça fonctionne pas.

    Je vais tenter de faire quelques chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public native void lecture() /*-{
      document.getElementById('mabaliseaudio').setAttribute(\"onTimeUpdate", lafonctionquivabien());
     
    }-*/
    J'espère que "lafonctionquivabien()" sera bien renommé, mais j'ai un gros doute.

    Edit : c'est bien ce que je pensais, il renomme même l'identifiant de balise...

    Allez dernière change je balance des document.write pour balancer mes balises, mais j'y crois pas trop

  9. #9
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Tu utilises JSNI là ?

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    JSNI c'est bien le fait de coder les fonctions nativement non ??

    On peut bien sur faire communiquer le Java et le JavaScript avec des beaux return.

    Ou j'ai rien compris ?

  11. #11
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    D'apres les exemples que je vois en tapant jsni gwt, j'ai l'impression que GWT ne renomme pas le javascript ainsi injecté.

    http://www.emgarten.com/using-jsni-in-gwt.htm

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Points : 88
    Points
    88
    Par défaut
    Oui, c'est bien jsni que tu utilises

    si "lafonctionquivabien" est une fonction Java, alors tu dois l'appeler avec une syntaxe particulière en précisant le chemin absolu des packages :

    // Call instance method instanceFoo() on this
    this.@com.google.gwt.examples.JSNIExample::instanceFoo(Ljava/lang/String(s);


    Regarde
    http://code.google.com/intl/fr/webto...asicsJSNI.html

    Nb : ça m'étonne que tu n'est pas trouvé ton bonheur avec les wrappers qui existent déjà. Tu cherche un wrapper qui n'utilise aucun plugin et uniquement du html 5 c'est bien ça ?

    Edit : ça ne conviendrait pas comme librairie ça :

    http://code.google.com/p/gwt-html5-media/

  13. #13
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci, je vais essayer un appel avec l'appel de fonction en absolu.

    Oui je cherche belle et bien un wrappers pour l'HTML5 du fait que j'ai éliminer les autres solutions.

    Pour ton lien dommage que le projet ne propose aucun téléchargement.

    Je vais regarder tout ça un ptit peu plus tard, un grand merci pour votre écoute


    edit : autant pour moi, j'avais pas vu le lien vers le svn du projet

  14. #14
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    @pvoncken
    Quand je regarde dans le javascript après compilation j'ai à la place de
    document.getElementById('aplayer') j'ai un truc du genre dans le fichier machin.nocache.js document.getElementByTag(eb).
    Mais je vais refaire des trucs plus propre et jeter un coup d'oeil sur ton lien .

  15. #15
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Du nouveau :

    Quelques info utile sur le wrapper HTML5-media :
    Pour télécharger le fichier .jar => ici
    Avoir un petit aperçu basique du code : ici

    Pour le "inherit" j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <inherits name='com.google.code.gwt.html5.media.HTML5Media'/>
    J'ai mis ça basiquement pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    import com.google.code.gwt.html5.media.client.*;
     
    Audio player = new Audio();
    player.src("http://monsite/monaudio.wav");
    player.play();
     
    function update(){
       player.addTimeUpdateHandler(new TimeUpdateHandler(){
         public void onTimeUpdate( TimeUpdateEvent event){
           ...
         }
       });
    }
    J'ai le son mais ma fonction update ne fonctionne pas à cause de TimeUpdate qui provoque des erreurs. Quelqu'un aurais des idées comment former cette écouteur d'événement plus proprement ???

    J'utilise Eclipse et j'ai un retour sur le module Development Mode qui me met dans "Unable to load module..." :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.google.gwt.core.client.JavaScriptException:(TypeError): window.console is undefined
    Ca vient apparament d'un problème de Typage !?
    La classe en question => ici et

    D'avance merci

    ------------
    Eclipse Java EE 3.5

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Points : 88
    Points
    88
    Par défaut
    Dans ton deuxieme code, tu mixe javascript et Java c'est normal ?

    Sinon les fichiers (handler et event) que tu pointes ne suffisent pas, est ce tu pourrais mettre la stack d'erreur complète plutot ?

  17. #17
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Oui c normal pour mon code... Enfin tout ça c'est du passer maintenant que j'ai un wrapper.

    La stack complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    [ERROR] [ecg_multi_view] Unable to load module entry point class fr.maboite.ecg.client.Ecg_multi_view (see associated exception for details)
    com.google.gwt.core.client.JavaScriptException: (TypeError): window.console is undefined
     fileName: http://127.0.0.1:8888
     lineNumber: 15
     stack: ("timeupdate")@http://127.0.0.1:8888:15
    connect("http://127.0.0.1:8888/Ecg_multi_view.html?gwt.codesvr=127.0.0.1:9997","B0cLM9`=??T@B'@!","127.0.0.1:9997","ecg_multi_view","2.0")@:0
    ((void 0),"ecg_multi_view","http://127.0.0.1:8888/ecg_multi_view/")@http://127.0.0.1:8888/ecg_multi_view/hosted.html?ecg_multi_view:264
    z()@http://127.0.0.1:8888/ecg_multi_view/ecg_multi_view.nocache.js:2
    (37)@http://127.0.0.1:8888/ecg_multi_view/ecg_multi_view.nocache.js:8
        at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
        at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
        at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
        at com.google.gwt.dev.shell.ModuleSpace.invokeNativeInt(ModuleSpace.java:240)
        at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeInt(JavaScriptHost.java:75)
        at com.google.code.gwt.html5.media.client.Media.mediaEventGetTypeInt(Media.java)
        at com.google.code.gwt.html5.media.client.Media.addMediaEventHandler(Media.java:501)
        at com.google.code.gwt.html5.media.client.Media.addTimeUpdateHandler(Media.java:469)
        at fr.maboite.ecg.client.Ecg_multi_view.player(Ecg_multi_view.java:60)
        at fr.maboite.ecg.client.Ecg_multi_view.onModuleLoad(Ecg_multi_view.java:287)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:369)
        at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:185)
        at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:380)
        at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
        at java.lang.Thread.run(Unknown Source)

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Points : 88
    Points
    88
    Par défaut
    Dans le fichier fr.maboite.ecg.client.Ecg_multi_view, il n'y a pas un appel natif à du JS à la fonction window.console ?

    C'est ce que la stacktrace à l'air de dire

  19. #19
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Non j'ai pas de JS, je me sers de quelques Window.alert pour débuggé mais pas de Window console.

    Je vais les commentés et voir si cela change quelques choses.

    Edit :
    Oulà je sais pas ce qui arrive à Eclipse mais j'ai maintenant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    java.lang.IllegalArgumentException: Argument not valid The entity "circ" was referenced, but not declared.
    at org.eclipse.swt.SWT.error(SWT.java:3865)
    at org.eclipse.ui.internal.forms.widgets.FormTextModel.parseInputStream(FormTextModel.java:133)
    at org.eclipse.ui.internal.forms.widgets.FormTextModel.parseTaggedText(FormTextModel.java:111)
    at org.eclipse.ui.forms.widgets.FormText.setText(FormText.java:673)
    at org.eclipse.ui.forms.widgets.ScrolledFormText.loadText(ScrolledFormText.java:156)
    at org.eclipse.ui.forms.widgets.ScrolledFormText.setText(ScrolledFormText.java:126)
    at com.google.gwt.eclipse.oophm.views.hierarchical.LogContent.updateDetailsPane(LogContent.java:289)
    at com.google.gwt.eclipse.oophm.views.hierarchical.LogContent.access$1(LogContent.java:224)
    at com.google.gwt.eclipse.oophm.views.hierarchical.LogContent$5.selectionChanged(LogContent.java:201)
    at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.runtime.Platform.run(Platform.java:888)
    at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
    at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
    at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2132)
    at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1160)
    at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1190)
    at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:228)
    at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:222)
    at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:389)


    C'est à ce demander si mon programme est pas entièrement faux. Mais sans cet écouteur ça tourne bien...

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 61
    Points : 88
    Points
    88
    Par défaut
    Heu là, dans ta dernière stack trace c'est clairement un problème avec Eclipse.

    Tu veux pas recréer un projet vide juste pour tester la librairie audio et vérifier si elle marche sur un exemple simple ?

    Nb : pour débug avec des log, plutôt que des Window.alert tu devrais utiliser la méthode Gwt.log(String), ou carrément la librairie gwt-log

Discussions similaires

  1. audio & gwt
    Par morey6757 dans le forum GWT et Vaadin
    Réponses: 0
    Dernier message: 07/01/2014, 13h33
  2. Lire les pistes d'un cd audio qd il y a plusieur lecteurs cd
    Par busy999 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/10/2003, 09h26
  3. extraire une portion audio d'une vidéo
    Par Brunoo dans le forum DirectX
    Réponses: 2
    Dernier message: 16/06/2003, 10h29
  4. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  5. programmation audio !?
    Par martimacfly dans le forum DirectX
    Réponses: 1
    Dernier message: 09/03/2003, 12h55

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