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

Flash Discussion :

Modification d'un sous-titrage video en live


Sujet :

Flash

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut Modification d'un sous-titrage video en live
    Bonjour,

    Je me lance dans un projet de player flv qui affiche des sous-titres qu'il doit être possible de modifier en live

    J'ai adopté une solution qui ressemble, à quelques détails près, à celle qui est présentée sur cette page :
    http://www.actionscript.org/resource...XML/Page1.html

    Petit topo rapide :
    - les sous-titres de la video accompagnés de leurs time-codes se trouvent dans un xml qui est chargé en tant qu'instance d'une classe XModel.
    - une fonction crée les cuepoints qui vont bien avec les time-codes et ajoute le sous-titre dans la zone de texte dynamique


    Jusque là je n'ai pas trop de souci puisque je me suis grandement inspiré du tutorial.

    Désormais, je veux rajouter une possibilité à l'utiliseur à savoir que lorsqu'il met le player sur "pause", il puisse, modifier la zone de texte dynamique (en gros que le "dynamic text" devienne "input text") et qu'une validation modifie l'instance du XModel...
    Et c'est là que j'aimerais un coup de pouce puisque je bloque.

    Ensuite pour mettre à jour le fichier xml, je pense pouvoir gérer un script php qui fasse l'affaire.

    Voilà, si tu as des conseils qui puissent m'aider, je suis preneur.
    Merci.



    edit : flash pro 8

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonsoir a tous,

    il puisse, modifier la zone de texte dynamique (en gros que le "dynamic text" devienne "input text") et qu'une validation modifie l'instance du XModel...
    Et c'est là que j'aimerais un coup de pouce puisque je bloque.
    C'est une tres, tres bonne idée je trouve

    je vais essayer d'apporter quelques piste.

    pour metre un texte en mode d'édition (input), il faut utiliser la propriété type de la class TextField
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* my_txt est une instance de la class TextField.
    ( en gros c'est un champ de texte crée dynamiquement)
    */
    my_txt.type="input";//le champ de texte est éditable
    //my_txt.type="dynamic";//le champ de texte n'est plus éditable
    pour modifier ton Xmodel, il faut utiliser la class XMLNode. Cette class te permettra de selectionner le noeud de ton xml(Le sous titre) et de le modifier. Je pense que tu aura besoin de toute les methode et propriété de cette class (on une grande partie en tout cas). Donc je te laisse t'entrainer un peu ...

    PS: afficher l'aide > reference actionscript > reference class > ....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Bonjour, bonsoir,

    Bon j'avance doucement mais surement.

    Je ne maîtrise pas tout à fait les input text fields à savoir qu'une fois que je transforme le dynamic en input, je ne vois pas comment récupérer facilement le string entré au clavier. Mais bon ça je devrais m'en sortir.

    Plus compliqué, je ne sais pas trop comment m'y prendre avec ce script :

    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
    var theFLV_file:String;
    var arr_cue_points:Array = new Array();
    var listener = new Object();
     
     
    listener.onModelledObject = function(eventObject:Object):Void {
    	var cuepoints:Object = eventObject.modelledObject;	
    	theFLV_file = cuepoints.flvName
    	video1.contentPath = theFLV_file;
     
    	for(kk=0; kk<cuepoints.cuepoint.length; kk++){		
    		var cueObj:Object = new Object();
    		cueObj.cueTitle = cuepoints.cuepoint[kk].cuename[0].text;
    		cueObj.cueTime = cuepoints.cuepoint[kk].cuetime[0].text;
    		cueObj.cueText = cuepoints.cuepoint[kk].subtitle[0].text;
    		arr_cue_points[cueObj.cueTitle] = cueObj;
     
     
    		createCuepoint(cueObj.cueTitle, cueObj.cueTime);
    	}
    }
     
    var theContent:XModel = new XModel();
    theContent.addEventListener("onModelledObject", listener);
     
    theContent.load("vid/bbt.xml");
    Je souhaite pouvoir récupérer la variable cuepoints pour pouvoir l'utiliser dans l'ensemble du projet. En somme faire quelque chose du genre :

    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
    var theFLV_file:String;
    var arr_cue_points:Array = new Array();
    var listener = new Object();
    
    
    listener.onModelledObject = function(eventObject:Object):Object {
    	var cuepoints:Object = eventObject.modelledObject;	
    	theFLV_file = cuepoints.flvName
    	video1.contentPath = theFLV_file;
    
    	for(kk=0; kk<cuepoints.cuepoint.length; kk++){		
    		var cueObj:Object = new Object();
    		cueObj.cueTitle = cuepoints.cuepoint[kk].cuename[0].text;
    		cueObj.cueTime = cuepoints.cuepoint[kk].cuetime[0].text;
    		cueObj.cueText = cuepoints.cuepoint[kk].subtitle[0].text;
    		arr_cue_points[cueObj.cueTitle] = cueObj;
    		
    
    		createCuepoint(cueObj.cueTitle, cueObj.cueTime);
    	}
    	return(cuepoints);
    }
    
    var theContent:XModel = new XModel();
    var arbreXML:Object = theContent.addEventListener("onModelledObject", listener);
    
    theContent.load("vid/bbt.xml");
    Mais ça n'a pas l'air de fonctionner. Bon, j'avoue, je ne suis pas très habitué à la programmation évènementielle...




    Encore merci pour votre aide précieuse.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Bonjour, bonsoir,

    Bon je galère sur ce listener.onModelledObject.
    Comment pourrait-on exploiter la variable cuepoints à l'extérieur du bloc dans lequel elle est créée ?

    Merci merci.

  5. #5
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    a tu essayer de modifier la porté de ta variable ?

    comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var cuepoints:Object;
    
    listener.onModelledObject = function(eventObject:Object) {
    	cuepoints = eventObject.modelledObject;
    	// [...]
    }
    // cuepoints n'est disponible qu'apres l'appel/diffusion de l'evenement onModelledObject

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par CR_Gio
    a tu essayer de modifier la porté de ta variable ?
    Ca m'avance en effet

    Dois-je en conlure que la fonction en question ne peut renvoyer d'objet ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Autre question :

    Ou puis-je avoir l'ensemble des propriétés de la class TextField, dont fait justement partie la prorpiété "type" que je mets à "input" ?

    Merci.

  8. #8
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Dois-je en conlure que la fonction en question ne peut renvoyer d'objet ?
    Pour le savoir, il faut regarder le prototype de la methode onModelledObject dans la class XModel. En tout cas, tu ne peu pas modiffier son prototype en dehors de sa class.

    Ou puis-je avoir l'ensemble des propriétés de la class TextField, dont fait justement partie la prorpiété "type" que je mets à "input" ?
    http://download.macromedia.com/pub/d...l8_fr_pdfs.zip
    ou sinon, appuie sur F1 dans flash.
    selectionne reference actionscript>class>textField

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Je m'étais un peu perdu dans l'aide anglaise, mais en effet, tout y est mentionné (comme souvent me diras-tu) .

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Toutes les petites infos m'ont bien aidé pour avancer largement.
    Minatenant je cherche une manière de rendre momentanément inactif mon FLVPlayback (interdire l'usage des boutons play, pause etc.)

    J'ai cherché vainement une méthode enable ou hide dans FLVplayback.as...

  11. #11
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Je pense que tu parle du menu contextuel de flash(clique-droit).
    Si tel est le cas, regarde la class MovieClip, il y a un propriété qui s'appel contextMenu

    PS: ca aurai pu faire le sujet d'un nouveau post

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par CR_Gio
    Je pense que tu parle du menu contextuel de flash(clique-droit).
    Si tel est le cas, regarde la class MovieClip, il y a un propriété qui s'appel contextMenu

    En fait non.
    J'ai créé un bouton (modif) qui permet d'éditer les sous-titres de la video qui est jouée. La vidéo est alors mise en pause... et à ce moment là je souhaite que les boutons du player ne soient pas actifs (impossible de remettre lecture par exemple).
    Il n'est pas question de menu contextuel.

    Pour être clair, je mets une petite image :



    En ce sens, je ne pense pas qu'il vaille la peine de créer un autre sujet.

  13. #13
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bon ... pour faire court et simple.

    Ce que tu pourrai faire c'est de créer un clip transparent avec un code du genr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // dans clip_hinib
    this.onPress=function()
    {
    }
    this.useHandCursor=false;
    this._visible=false;
    Ce clip serrait donc audessus des boutons (play/pause/...). Il permetrait d'hiniber les les bouton.

    pour inibiber les bouton, il te suffirai de faire un : clip_hinib._visible=true; et inversement.

    C'est une methode un peu douteuse quoi que ...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par CR_Gio
    Bon ... pour faire court et simple.

    Ce que tu pourrai faire c'est de créer un clip transparent avec un code du genr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // dans clip_hinib
    this.onPress=function()
    {
    }
    this.useHandCursor=false;
    this._visible=false;
    Ce clip serrait donc audessus des boutons (play/pause/...). Il permetrait d'hiniber les les bouton.

    pour inibiber les bouton, il te suffirai de faire un : clip_hinib._visible=true; et inversement.

    C'est une methode un peu douteuse quoi que ...

    C'est une manière de procéder à laquelle j'avais pensée mais je pensais qu'il y avait une manière plus rigoureuse d'y arriver. Mais bon, du moment que j'arrive à mes fins

  15. #15
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    C'est une manière de procéder à laquelle j'avais pensée mais je pensais qu'il y avait une manière plus rigoureuse d'y arriver. Mais bon, du moment que j'arrive à mes fins
    La meniere la plus rigoureu serrai de modifier la class qui controle/gere les bouton. Mais c'est plus 3 ligne de code sans ce prendre la tete. c'est 10 ligne est passant un peu de temps. Mais ca reste faisable... pour qui le souhaite

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Points : 64
    Points
    64
    Par défaut
    Ce serait grandement se compliquer la vie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier .srt sous-titrage video
    Par MMDM12 dans le forum Multimédia
    Réponses: 11
    Dernier message: 12/07/2012, 09h39
  2. date de modification de fichier sous windows
    Par brisbo dans le forum Windows
    Réponses: 2
    Dernier message: 04/05/2006, 23h45
  3. Réponses: 4
    Dernier message: 29/10/2005, 11h22
  4. Sous-titres vidéos
    Par Invité4 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 09/08/2005, 00h21

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