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 :

[JMF] Can't commit JMFRegistry


Sujet :

Multimédia Java

  1. #21
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          for (int i = 0; i < track.length; i++) {
                if(!encodingOK && track[i] instanceof FormatControl){
                    if(((FormatControl)track[i]).setFormat(new AudioFormat(AudioFormat.ULAW_RTP, 8000, 8, 1))==null){
                        track[i].setEnabled(false);
                    }
                    else{
                        encodingOK = true;
                      track[i].setEnabled(true);   // <---------------
                      }
                }
                else{
                    track[i].setEnabled(false);
                }
            }
    et puis regarde un peu avec JMFRegistry si le format donnée est supporté par ton micro
    Colère et Haine mènent à la Puissance

  2. #22
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Pour le format, il fonctionne.
    Dans registry, il me donne toute une liste de linear.
    J'ai une méthode qui écrit dans un fichier le son du micro et il fonctionne.

    Question :
    Dans quel ordre, faut-il démarrer le datasource, le processor et sendstream ?

    Autre question :
    Dans SIPCommunicator, ils utilisent un PushBufferDataSource,
    Quel est l'interet ?

    En tout cas, je te remercie pour ton aide, ça me fait bien avancer.

  3. #23
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    l'ordre n'a pas vraiment d'importance mais en général, je démarre d'abord le datasource puis le processor puis le sendstream

    PushBufferDataSource permet de récuperer les données avant traitement, tu peux avoir des données en byte[] ce qui est des fois bien pratique, mais c'est du niveau + bas, j'ai pas réussi à l'utiliser correctement d'ailleurs
    Colère et Haine mènent à la Puissance

  4. #24
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Le week-end venant (ainsi que le pont), je vais m'arrêter là pour aujourd'hui.
    Je reprendrai mercredi en espérant réussi enfin à envoyer du son.

    Encore merci pour ta précieuse aide et bon week-end

  5. #25
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Après maintes et maintes recherches, j'ai trouvé le pourquoi du comment.

    Il m'était impossible d'envoyer du son vers mon serveur Asterisk car je ne récupérais pas le port de communication.

    En effet, dans la réponse du serveur, on peut récupérer le port dans le SDP.

    sdpData provenant de la méthode : new String(response.getRawContent())

    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
    public int getMediaPort(){
            SessionDescription sessionDescription = null;
            try {
                sessionDescription = sdpFactory.createSessionDescription(sdpData);
            }
            catch (SdpParseException ex) {
                System.err.println("Incorrect SDP data! "+ ex);
            }
            Vector mediaDescriptions = null;
            try {
                mediaDescriptions = sessionDescription.
                    getMediaDescriptions(true);
            }
            catch (SdpException ex) {
                System.err.println("Failed to extract media descriptions from provided session description!"+ ex);
            }
            Connection sessionConnection = sessionDescription.getConnection();
            String sessionRemoteAddress = null;
            if (sessionConnection != null) {
                try {
                    sessionRemoteAddress = sessionConnection.getAddress();
                }
                catch (SdpParseException ex) {
                    System.err.println("Failed to extract the connection address parameter from privided session description"+ ex);
                }
            }
            int mediaPort = -1;
            boolean atLeastOneTransmitterStarted = false;
            ArrayList mediaTypes = new ArrayList();
            ArrayList remoteAddresses = new ArrayList();
            ArrayList ports = new ArrayList();
            ArrayList formatSets = new ArrayList();
            for (int i = 0; i < mediaDescriptions.size(); i++) {
                MediaDescription mediaDescription = (MediaDescription) mediaDescriptions.get(i);
                Media media = mediaDescription.getMedia();
                //Media Type
                String mediaType = null;
                try {
                    mediaType = media.getMediaType();
                }
                catch (SdpParseException ex) {
                    System.err.println(
                        "Failed to extract the media type for one of the provided media descriptions!\n"
                        + "Ignoring description!"+
                        ex);
                    continue;
                }
                //Find ports
                try {
                    mediaPort = media.getMediaPort();
                }
                catch (SdpParseException ex) {
                    System.err.println("Failed to extract port for media type ["
                                  + mediaType + "]. Ignoring description!"+
                                  ex);
                    continue;
                }
                //Find  formats
                Vector sdpFormats = null;
                try {
                    sdpFormats = media.getMediaFormats(true);
                }
                catch (SdpParseException ex) {
                    System.err.println(
                        "Failed to extract media formats for media type ["
                        + mediaType + "]. Ignoring description!"+
                        ex);
                    continue;
                }
     
                Connection mediaConnection = mediaDescription.getConnection();
                String mediaRemoteAddress = null;
                if (mediaConnection == null) {
                    if(sessionConnection == null) {
                        System.err.println(
                            "A connection parameter was not present in provided session/media description");
                    } else {
                        mediaRemoteAddress = sessionRemoteAddress;
                    }
                } else {
                    try {
                        mediaRemoteAddress = mediaConnection.getAddress();
                    }
                    catch (SdpParseException ex) {
                        System.err.println(
                            "Failed to extract the connection address parameter"
                            + "from privided media description"+ ex);
                    }
                }
            }
            return mediaPort;
        }

  6. #26
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    Asterisk, connais pas!
    C'est quoi au juste? C'est utile?
    Colère et Haine mènent à la Puissance

  7. #27
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Asterisk est notre serveur PABX VoIP Open Source.
    Pour plus d'infos, www.asterisk.org

  8. #28
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut ca m'interesse beaucoup!!
    salut ;
    je suis sensé dévlopper un application voIP pour gérer la communication d'un centre d'appel pour mon PFE.bref....je compte utiliser JAIN et je suis tmobé sur ton post.
    je voudrai bien savoir coment faire pour exploiter SIP COMMUNICATOR et Asterik pour développer ton application.
    ce serai aimable si tu me donnais un lien pour avoir le code source de SIP COMMunicator et une petite explication sur la structure de ton application car franchement je me sens un peut perdu
    merci d'avance !!

  9. #29
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Note un peu HS parce qu'en retard de quelques jours : Java Web Start ca peut quand meme etre TRES interressant en entreprise pour distribuer une application ne serait-ce que parce que ca evite de devoir manuellement patcher soi-meme tous les clients lors d'une mise-a-jour (ou de devoir laisser les utilisateur se demer!@#$ eux-memes). Et par rapport a un lien, alias ou un raccourcit sur une share/repertoire partage c'est mieux car le programme marche meme si le reseau est coupe.

    Il ne faut qu'un serveur web (n'importe quelle machine de base avec Apache) pour heberger les fichiers JAR et JNPL ainsi un certificat pour signer son JAR (on peut en generer soi-meme d'une duree de vie de 6 mois avec les outils du JDK).

    Woala... pour le reste de la conversation je pige que dalle.. Bonne continuation.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  10. #30
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Salut,

    SIP Communicator est un bon exemple car il permet de bien cerné comment gérer le protocole SIP.
    Etant plus un projet universitaire, cette application est bien structurée mais vraiment pas performante.
    Pour le code source, tu le trouves sur : http://sip-communicator.dev.java.net/source/browse/sip-communicator/

    Pour commencer, tu devrais d'abord te focaliser sur le côté SIP de l'application avant de t'attaquer au JMF ou au JavaSound.
    Crée d'abord une classe de gestion de SIP qui implémente l'interface SIPListener.
    Pour étudier la javadoc de JAIN, commences par SIPFactory.

    N'hésites à poser de questions, comme je suis déjà passé par là.

  11. #31
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    merci pour les conseils.
    pour la javadoc je l'ai lue de passage question de savoir juste de quoi il sagit.
    et le Sip Communicator j'ai essayé de le faire marcher mais j'ai pas vraiment réussit à l'exploiter (j'ai eu un problème de registration) mais pour son code source je ne connais pas vraiment CVS. j'ai quandmême installé le WinCVS mais je cherche encore comment l'utiliser pour récupérer le code source.

    tu m'a dit de faire une classe qui implémente un SipListener...d'après ce que j'ai compris, cette classe doit (corrige moi si je me trompe quelquepart) contenir pour; commencer; une méthode setup() pour :
    créer une instance de SipFactory et créer un SipStack puis un SipProvider et y enregistrer le LiseteningPoint puis ajouter un SipListener.
    j'ai essayé comme ca mais j'ai eu un message d'erreur :
    "The Peer JAIN SIP Object: Example.jain.protocol.ip.sip.SipStackImpl could not be instantiated. Ensure the Path Name has been set."
    qui provient du bout de code suivant :
    sipFactory = SipFactory.getInstance();
    sipFactory.setPathName("Example");
    try {
    sipStack = (SipStack) sipFactory.createSipStack();
    }
    catch (SipPeerUnavailableException e) {
    System.err.println(e.getMessage());
    System.exit(0);
    }
    catch (SipException ex) {
    }

    une idée peut être ????
    en tout cas moi je cherche encore.
    et merci enrore pour ton attention

  12. #32
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    encore un petit truc, le message d'erreur provient de l'exception : SipPeerUnavailableException si ça peut te clarifier les choses

  13. #33
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Pour ma part, dans le constructeur de mon SipManager, j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Initialisation des variables d'environnement nécessaires à SipFactory
    adresseLocale = InetAddress.getLocalHost().getHostAddress();
                System.setProperty("javax.sip.IP_ADDRESS", adresseLocale);
                System.setProperty("javax.sip.STACK_NAME", "");
                monFactory = SipFactory.getInstance();
                // Création des instances de gestion du protocole SIP
                addressFactory = monFactory.createAddressFactory();
                headerFactory = monFactory.createHeaderFactory();
                messageFactory = monFactory.createMessageFactory();
                sipStack = monFactory.createSipStack(System.getProperties());
                listeningPoint = sipStack.createListeningPoint(5060,"udp");
                monProvider = sipStack.createSipProvider(listeningPoint);
                monProvider.addSipListener(this);

  14. #34
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    merci pour le bout de code, c'est plus ou moin ce que j'ai fait aussi.
    j'ai toujours pas réussi à avoir la source de Sip Communicator via ce satanné CVS alors je me delandais si tu n'aurai pas la gentillesee de m'envoyer par e-mail le répertoire /src si ça ne te dérange pas.
    autre chose ; une fois que j'ai un proxy (jain-sip-presence-proxy) et un client, est-ce possible de tester en local ??
    merci

  15. #35
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    bon, lasse tomber ce que j'ai dis pour la source, j'ai enfin réussit à faire marcher ce malheureux CVS et j'ai eu la source...mais j'ai pas compris c'est quoi l'histoire de ce paquet "javax.*" et tous les paquets qu'il contient que je trouve un peu par tout appelé dans les clauses "import" sans que j'en trouve la source !! que des .class ... où pourrais-je récupérer sa source??

  16. #36
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Je me demande si tu as bien récupéré le source.
    En tout cas, je ne suis pas passé par CVS, je l'ai récupéré en ZIP (14Mo).

    Mais je ne retrouve pas sur quel site.

  17. #37
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    c'est vrai t'as raison, mais maintenant je suis sû d'avoir toutes les sources : celle de Sip Communicator, celle de jain presence proxy et celle de l'API, et je me trouve face à un nouveau problème c'est avec quelle version de l'API je vais travailler ? celle qui accompagne sip communicator (le package javax.sip.* et ce qui suit) ou l'implémentation de référence (le package jain.protocol.ip.sip.* et ce qui suit).
    en tout cas pas avec les deux car il contiennent à peut près la même chose.

  18. #38
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    J'ai utilisé javax.sip du package Jain-sip inclu dans Sip communicator.

  19. #39
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    ok merci pour l'info...je commence le développement des classes pour le module sip de l'application et je suis sûr que je rencontrerai des problèmes très prochainement. alors je te tiens au courant.

  20. #40
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Octobre 2005
    Messages : 103
    Points : 81
    Points
    81
    Par défaut
    Pas de problème.
    Bonne chance.

    De mon côté, je commence mardi à bosser sur la programmation des fichiers de configurations du serveur Asterisk.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/01/2014, 08h33
  2. [Utilisation] commit : permission denied, Can't write activity db
    Par olivier57b dans le forum Subversion
    Réponses: 1
    Dernier message: 03/02/2012, 15h14
  3. [Installation] Can't open activity db : Permission denied pour le commit.
    Par Xavier3131 dans le forum Subversion
    Réponses: 5
    Dernier message: 26/06/2009, 07h11
  4. commit et rollback....?
    Par The_Nail dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/06/2003, 14h36
  5. [JMF][MediaPlayer] hauteur et largeur de la video
    Par mbp566 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/08/2002, 15h19

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