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 :

Transfert d'un flux audio


Sujet :

Multimédia Java

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut Transfert d'un flux audio
    bonjour,
    j'ai pas mal cherché sur internet pour transfèrer un flux audio continu mais je n'ai rien trouvé d'intéressant.

    j'aurais aimé savoir si il existait un moyen facile de transfèrer un flux audio continu dans le but de faire un pseudo teamspeak sur un chat que j'ai fait.

    j'aimerai pouvoir en cliquant sur un bouton activer la capture sur un micro et l'envoyer jusqu'à cliquer sur le bouton stop.

  2. #2
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 43
    Par défaut Jmf?
    salut!

    et la librairie JMF? d'apres ce que tu decris, ca a l'air de correspondre a ce que tu veux faire, non?

    avec JMF tu peux transmettre des flux videos et audio captures ou deja enregistres, et tu peux faire des traitements style pause, stop...

    http://java.sun.com/products/java-media/jmf/

    ou alors g peut etre pas compris ce que tu veux faire?

    ciao

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Citation Envoyé par vero55
    salut!

    et la librairie JMF? d'apres ce que tu decris, ca a l'air de correspondre a ce que tu veux faire, non?

    avec JMF tu peux transmettre des flux videos et audio captures ou deja enregistres, et tu peux faire des traitements style pause, stop...

    http://java.sun.com/products/java-media/jmf/

    ou alors g peut etre pas compris ce que tu veux faire?

    ciao
    merci de ta réponse.
    j'avais vu un peu jmf mais mais je n'ai pas du réussir à l'utiliser correctement.

    en fait quand je fais ça il ne me trouve pas de micro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CaptureDeviceInfo Micro = null;
    Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("LINEAR",11025,8,1));
    je me suis dit que d'utiliser une méthode plus simple sans avoir besoin de tant de choses serait peut être plus intéressante.

    alors peut être que je m'y prend mal mais après avoir cherché sur internet un petit peu j'ai trouvé quelque chose comme quoi il faut installer des drivers etc.

    je voulais faire un programme simple qui prend en compte toutes les cartes son.

    dans le code suivant le vecteur renvoyé est vide.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    import java.util.Vector;
     
    import javax.media.CaptureDeviceInfo;
    import javax.media.CaptureDeviceManager;
    import javax.media.Format;
    import javax.media.Manager;
    import javax.media.NoProcessorException;
    import javax.media.Processor;
    import javax.media.control.TrackControl;
    import javax.media.format.AudioFormat;
    import javax.media.format.UnsupportedFormatException;
    import javax.media.protocol.ContentDescriptor;
    import javax.media.protocol.DataSource;
    import javax.media.rtp.InvalidSessionAddressException;
    import javax.media.rtp.RTPManager;
    import javax.media.rtp.SendStream;
    import javax.media.rtp.SessionAddress;
     
    public class Sender {
    	public Sender() {
    		// Declaration du CaptureDeviceInfo du Micro
    		CaptureDeviceInfo Micro = null;
    		// Recherche des CaptureDevices
    		Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("LINEAR",11025,8,1));
    		// Creation des CaptureDeviceInfo pour le Micro et la Webcam
    		Micro = (CaptureDeviceInfo) deviceList.get(0);
    		// Declaration des Processors du Micro et de la Webcam
    		Processor MicroCessor = null;
    		try {
    			// Creation du Processor du Micro et de la Webcam
    			MicroCessor = Manager.createProcessor(Micro.getLocator());
    			MicroCessor = configure(MicroCessor);
    			SetSupportedFormat(MicroCessor);
    			MicroCessor = realize(MicroCessor);
    			Demarre(MicroCessor);
    			createRTPManager(MicroCessor);
    		} catch (IOException e) {
    			System.out.println("Erreur : " + e.getMessage());
    		} catch (NoProcessorException e) {
    			System.out.println("Erreur : " + e.getMessage());
    		}
    	}
     
    	public Processor configure(Processor p) {
    		// Attendre tant que le Processor n'est pas configuré.
    		while (p.getState() < Processor.Configured) {
    			// Configuration du Processor
    			p.configure();
    		}
    		return p;
    	}
     
    	public void SetSupportedFormat(Processor p) {
    		// On met la description du contenu de sortie à RAW_RTP
    		// pour limiter les formats supportés
    		ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
    		p.setContentDescriptor(cd);
     
    		// On obtient les différentes pistes du processor
    		TrackControl track[] = p.getTrackControls();
    		for (int i = 0; i < track.length; i++) {
    			// on obtient les formats supportés pour cette piste
    			Format suppFormats[] = track[i].getSupportedFormats();
    			// Si il y a au moins un format supporté
    			// alors on met le premier
    			if (suppFormats.length > 0) {
    				track[i].setFormat(suppFormats[0]);
    			} else {
    				track[i].setEnabled(false);
    			}
    		}
    	}
     
    	public Processor realize(Processor p) {
    		// Attendre tant que le Processor n'est pas réalisé.
    		while (p.getState() < Processor.Realized) {
    			// Réalisation du Processor
    			p.realize();
    		}
    		return p;
    	}
     
    	public void Demarre(Processor p) {
    		// Demarrage du Processor
    		p.start();
    	}
     
    	public void createRTPManager(Processor p) {
    		// Creation du DataSource correspondant au Processor
    		DataSource OutputSource = p.getDataOutput();
    		// Nouvelle Instance d'un RTPManager
    		RTPManager rtpm = RTPManager.newInstance();
    		try {
    			// Création d'une SessionAddress
    			// correspondant à l'adresse locale
    			SessionAddress localaddr = new SessionAddress(InetAddress
    					.getLocalHost(), 40000);
    			// Initialisation du RTPManager
    			// à partir de la SessionAddresse locale
    			rtpm.initialize(localaddr);
    			// Création d'une SessionAddress
    			// correspondant à l'adresse de destination
    			SessionAddress destaddr = new SessionAddress(InetAddress
    					.getByName("127.0.0.1"), 22224);
    			// Ajout de cette SessionAddress dans le RTPManager
    			rtpm.addTarget(destaddr);
    			// Creation d'un SendStream à partir du DataSource
    			SendStream ss2 = rtpm.createSendStream(OutputSource, 0);
    			// Demarrage du SendStream
    			ss2.start();
    			System.out.println("Started");
    		} catch (UnknownHostException e) {
    		} catch (IOException e) {
    		} catch (InvalidSessionAddressException e) {
    		} catch (UnsupportedFormatException e) {
    		}
    	}
    }
    si il y a un moyen pour rendre plus ou moins générique l'utilisation ça serait intéressant.

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 161
    Par défaut
    tu as pris quelle version de jmf ? la version java pure ? si tu es sous windows je te conseille de prendre la version avec les drivers natifs, tu as de meilleures performances et d'avantages de webcam supportées.
    ça a évidemment des inconvénients de portabilité, mais pour le moment, les applications mulitmedia sous java restent assez souvent expérimentales...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    ce n'est pas une webcam c'est ça le problème c'est juste un micro.
    en fait je veux juste récupérer le son d'une entrée carte son et l'envoyer sur le web compressée ou pas.

  6. #6
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 161
    Par défaut
    question bête, ton micro n'est pas utilisé par une autre application ?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    non pas lors de mes tests.

    personne n'a une idée pour avoir une reconaissance des cartes son?

    Même dans les package de base de javax.sound j'arrive a reconnaitre ma carte alors que avec un API fait pour je n'y arrive pas j'ai un peu de mal a comprendre.

  8. #8
    Invité
    Invité(e)
    Par défaut
    salut,
    il existe le protocole RTP qui te permet de transférer du flux vidéo ou audio.
    j'ai trouver un code dans se site : http://www.cs.odu.edu/~cs778/jmfexamples/

Discussions similaires

  1. [vfw] Copy du flux audio.
    Par Flo. dans le forum MFC
    Réponses: 3
    Dernier message: 07/06/2006, 09h19
  2. Flux audio WMP
    Par hiko-seijuro dans le forum MFC
    Réponses: 18
    Dernier message: 05/05/2006, 10h07
  3. Flux Audio
    Par getthematrix dans le forum MFC
    Réponses: 3
    Dernier message: 03/11/2005, 21h01
  4. Envoi d'un flux audio entre 2 PC
    Par TheDarkLewis dans le forum Windows
    Réponses: 2
    Dernier message: 30/08/2004, 02h02
  5. Acquerir un flux audio
    Par The Cyber Lewis dans le forum DirectX
    Réponses: 1
    Dernier message: 05/04/2004, 14h13

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