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

avec Java Discussion :

Adapter du code


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut Adapter du code
    Bonjour,

    Je ne programme pas le JAVA, mais j'ai besoin d'utiliser un module et je dois donc m'y mettre.
    Le code du module provient d'un exemple fournit par le fabricant (Wowza streaming engine), et à priori permet d'injecter des metadata sous titres dans un flux vidéo.

    Pour ma part j'aimerais faire un module qui accepte des variables depuis une url sur un port particulier et l'injecte dans le flux vidéo.
    Je n'ai pas vraiment besoin de vérifier les chaines passées en arguments, car le port d'acces ne sera ouvert que pour 1 IP spécifique.
    J'aimerais aussi pouvoir injecter l'heure GMT.

    Je connais bien le serveur vidéo en question (Wowza) mais pas Java, et donc cherche de l'aide.
    Voici le code en question :
    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
    package com.wowza.example.module;
     
    import com.wowza.wms.amf.*;
    import com.wowza.wms.client.*;
    import com.wowza.wms.module.*;
    import com.wowza.wms.request.*;
    import com.wowza.wms.stream.*;
     
    public class ModuleInjectData extends ModuleBase {
     
      public void setCaption (IClient client, RequestFunction function, AMFDataList params)
      {
        String streamname = params.getString(PARAM1);
        String text =  params.getString(PARAM2);
        String language = params.getString(PARAM3);
        String trackid = params.getString(PARAM4);
     
        IMediaStream stream = client.getAppInstance().getStreams().getStream(streamname);
     
        //essential code
        AMFDataMixedArray data = new AMFDataMixedArray();
        data.put("text", new AMFDataItem(text));
        data.put("language", new AMFDataItem(language));
        data.put("trackid", new AMFDataItem(trackid));
        stream.sendDirect("onTextData", data);
        getLogger().info("Caption: " + text);
      }
     
      public void injectMetaData(IClient client, RequestFunction function, AMFDataList params)
      {
        String streamName = params.getString(PARAM1);
        String data =  params.getString(PARAM2);
        IMediaStream stream = client.getAppInstance().getStreams().getStream(streamName);
        if (stream != null)
        {
          AMFDataList amfList = new AMFDataList();
     
          amfList.add(new AMFDataItem("@setDataFrame"));
          amfList.add(new AMFDataItem("onMetaData"));
     
          AMFDataMixedArray metaData = new AMFDataMixedArray();
     
          metaData.put("param1", data);
          metaData.put("param2", new AMFDataItem("data2"));
     
          amfList.add(metaData);
     
          synchronized(stream)
            {
            byte[] dataData = amfList.serialize();
            int size = dataData.length;
                  long timecode = Math.max(stream.getAudioTC(), stream.getVideoTC());
                  stream.setDataTC(timecode);
                  stream.setDataSize(size);
                  stream.startDataPacket();
                  stream.addDataData(dataData, 0, size);
            }
        }
      }
    }

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Plus précisément, quelle est la question ?

    Est-ce que c'est comment utiliser cette classe ?
    La classe ModuleInjectData utilise d'autres classes du package qu'il faudra également explorer ...
    As-tu une documentation complète ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Et bien je crois comprendre comment la classe fonctionne.
    Une fonction permet d'injecter des sous titres à un flux, et une autre fonction permet d'injecter des metadata toujours à un flux. Le tout avec un certains nb de parametres.
    Mon soucis est plutôt comment communiquer avec elle... Je voudrais fournir la variable AMFDataList params par le biais d'une url (en GET c'est plus simple)
    Est il nécessaire de connaitre le reste des dépendances ?
    La documentation complète existe : https://www.wowza.com/docs/wowza-str...a-api-overview

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Il faut créer un programme java qui crée l'objet AMFDataList dans lequel on place les informations.
    D'après la doc que j'ai rapidement survolé, ces informations sont des objets AMFData.

    Il te faut d'abord créer ces objets pour les placer dans l'objet AMFDataList
    (je suppose que AMFDataList est une bête liste d'objet AMFData)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    A priori, AMFDataList contient des variables nécessaire à renseigner les infos suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String streamname = params.getString(PARAM1);
    String text =  params.getString(PARAM2);
    String language = params.getString(PARAM3);
    String trackid = params.getString(PARAM4);
    Sont-il nécessairement des objects AMFData, et si oui, comment les construit-on ?

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Sont-il nécessairement des objects AMFData
    d'après ce que je vois : oui.
    , et si oui, comment les construit-on ?
    La doc indique qu'il s'agit d'une classe abstraite.
    Il faut commencer par créer une autre classe qui hérite de cette classe.
    Tu ne pourras utiliser que la classe fille.

    A vrai dire, si tu ne programmes pas en java, cela va être bien compliqué d'obtenir un résultat opérationnel.
    De combien de temps disposes-tu ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    A vrai dire, si tu ne programmes pas en java, cela va être bien compliqué d'obtenir un résultat opérationnel.
    C'est bien ce que je craignais...

    De combien de temps disposes-tu ?
    J'ai du temps, et j'aime bien comprendre les choses. Pour autant, sur ce coup, je préfèrerais avoir du tout cuit...

    Je ne suis pas trop dispo pour le moment, je reviens vers toi dès que possible.

    Merci

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Est ce qu'un module qui injecte toutes les secondes le temps unix serait plus simple à faire ?

  9. #9
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Je ne crois pas.

    La petite fonctionnalité que tu veux développer n'est probablement pas compliquée.
    Pour toi, la difficulté vient de la mise en œuvre de Java si tu n'en as jamais fait.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

Discussions similaires

  1. [Oracle] [PL/SQL] Adapter un code VB
    Par LoulouFifi dans le forum Oracle
    Réponses: 1
    Dernier message: 20/07/2006, 16h11
  2. Réponses: 7
    Dernier message: 24/03/2006, 09h25
  3. [débutant] Pb adaptation de code VBA
    Par delphineleclerc1 dans le forum Access
    Réponses: 9
    Dernier message: 28/02/2006, 12h58
  4. Réponses: 22
    Dernier message: 06/10/2005, 10h53
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

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