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

Multimédia Java Discussion :

lectture audio accélérée


Sujet :

Multimédia Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut lectture audio accélérée
    Bonjour,

    J'ai un code qui lit un fichier audio .wav et le rejoue. Ca marche très bien. Je souhaite pouvoir le rejouer en accéléré, c'est toujours amusant pour les enfants. J'utilise Java sound, je n'ai pas trouvé comme le faire. Peut être quelqu'un a une idée ?

    Le code qui rejoue mon audio est
    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
     
     
     
    	        int frameSizeInBytes = currentFormat.getFrameSize();
    	        int bufferLengthInFrames = line.getBufferSize() / 8;
    	        int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
    	        byte[] data = new byte[bufferLengthInBytes];
    	        int numBytesRead = 0;
    	        // start the source data line
    	        line.start();
    	        while (thread != null) {
    	            try {
     
    		            if ((numBytesRead = currentAudio.read(data,0,bufferLengthInBytes)) == -1) {
    	                	break;
    	                }
    	                int numBytesRemaining = numBytesRead;
    	                while (numBytesRemaining > 0 ) {
    	                    numBytesRemaining -= line.write(data, 0, numBytesRemaining);
    	                }
    	            } catch (Exception e) {
    	                shutDown("Error during playback: " + e);
    	                break;
    	            }
    	        }
    Je ne vois pas comment changer ce code pour qu'il lise en accéléré.
    Merci d'avance

  2. #2
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    J'ai vu ça sur la doc SUN : http://java.sun.com/j2se/1.4.2/docs/...ml#SAMPLE_RATE

    Du coup, regarde du côté de : http://www-igm.univ-mlv.fr/~dr/XPOSE...rcontrols.html

    Les sources sont libres, compile le programme, teste le, et dis moi si ca répond à ta question...

    J'ai pas de carte son au bureau, et je suis intéressé par le résultat.


    Billy

  3. #3
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Merci, je vais essayer et je te tiendrai au courant.

  4. #4
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Salut,

    Désolé que je ne suis pas revenu vers toi plus tôt, je viens de recommencer à travailler sur mon application.

    J'ai téléchargé le code sur le site que tu m'a indiqué et j'ai trouvé que c'est bien ça, la classe FloatControl permet de faire de la lecture accéléré. Il sufft de réceupérer le control et de l'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (line.isControlSupported(FloatControl.Type.SAMPLE_RATE)) {
          m_sampleRateControl = (FloatControl) line
                        .getControl(FloatControl.Type.SAMPLE_RATE);
    }
    Mon problème maintenant est que le test "isControlSupported" est négatif pour certains audio que j'utilise, pourtant ils sont tous des .wav.

    Est ce que tu as une idée pourquoi un audio supporterait le control et un autre non ?

    Merci

  5. #5
    Membre chevronné Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Par défaut
    J'ai eu la même difficulté. Tu as oublié les précieuses lignes du choix du mixer. En effet, il ne faut pas prendre celui par défaut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	        /** Recherche du mixer logiciel Java Sound Audio Engine */
    	        for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) {
    	            if (mixerInfo.getName().compareTo("Java Sound Audio Engine") == 0) {
    	                mixer = AudioSystem.getMixer(mixerInfo);
    	                break;
    	            }
    	        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sourceDataLine = (SourceDataLine) mixer.getLine(dataLineInfo);
    Je pense qu'avec ces petits bouts de code, tu t'en sortiras! D'ailleurs, je me suis amusé à testé tous les controles (le mute, le pan, etc...).

    Cordialement

  6. #6
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Merci beaucoup pour ton aide.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/10/2010, 09h16
  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