Forums Développement Multimédia

Aller au contenu

[Résolu] - Rotation vidéo via NetStream

NetStream air vidéo

14 réponses à ce sujet

#1 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 18 February 2018 - 19:14 PM

Bonjour,

Après avoir compulsé pas mal de pages sur le sujet (merci Google) j'ai monté un script pour la lecture de vidéos en streaming pour (aplli Air), j'ai réalisé l'ensemble de mon script à 100% de mes attentes, mes tests en interne (sur le PC) fonctionnes parfaitement cela dit sur mon smartphone ça ne fonctionne pas tout à fait comme prévu en effet la rotation de la vidéo ne fonctionne pas, celle-ci ne pivote pas, pouvez me dire comment corriger ce problème ? en vous remerciant d'avance.

Voici mon code complet:


var tuto;
var nc;
var ns;
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
ns.client = this;
tuto = new Video(320,180);
tuto.x = 5; tuto.y = 222;
tuto.attachNetStream(ns);

// BTN - TUTO 1

page_tuto.clip_tuto.btn_tuto_1.addEventListener(MouseEvent.MOUSE_DOWN, tuto_1_down);
  function tuto_1_down(me:MouseEvent):void { posi_Down = page_tuto.clip_tuto.y; }

page_tuto.clip_tuto.btn_tuto_1.addEventListener(MouseEvent.MOUSE_UP, tuto_1_up);
  function tuto_1_up(me:MouseEvent):void {
 
   posi_Up = page_tuto.clip_tuto.y;  
   if(posi_Up == posi_Down){
 
   removeChild(page_tuto);
   addChild(clip_video);
   addChild(tuto);
   ns.play("http://mon_site.fr/videos/tuto_1.mp4");
 
   }
  }

// LECTURE/PAUSE
clip_video.btn_lecture.addEventListener(MouseEvent.CLICK, play_tuto_1);
function play_tuto_1(event:MouseEvent):void {
  if(clip_video.clip_lecture.currentFrame == 1){
 
        clip_video.clip_lecture.gotoAndStop(2);  ns.pause();
 
  } else { clip_video.clip_lecture.gotoAndStop(1); ns.resume();
 
   }
}

// PLEIN ÉCRAN
clip_video.btn_plein_ecran.addEventListener(MouseEvent.CLICK, plein_ecran_1);
function plein_ecran_1(event:MouseEvent):void {

tuto.rotation = 90;
tuto.x = 330;
tuto.y = 0;
tuto.scaleX = 1.85;
tuto.scaleY = 1.85;
addChild(btn_plein_ecran);

}

// FERMER
clip_video.btn_fermer.addEventListener(MouseEvent.CLICK, close_tuto_1);
function close_tuto_1(event:MouseEvent):void {

  clip_video.clip_lecture.gotoAndStop(1);
  removeChild(clip_video);
  addChild(page_tuto);
  ns.close();
  tuto.clear();

}

// RETOUR PLEIN ÉCRAN
btn_plein_ecran.addEventListener(MouseEvent.CLICK, retour_plein_ecran_1);
function retour_plein_ecran_1(event:MouseEvent):void {

  removeChild(btn_plein_ecran);
  tuto.x = 5;
  tuto.y = 222;
  tuto.scaleX = 1;
  tuto.scaleY = 1;
  tuto.rotation = 0;
}
 


#2 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 21 February 2018 - 16:33 PM

C'est bizarre ce bug.
Il faudrait essayer de déactiver "disableMediaCodec" (true) dans le descripteur de l'application ou d'utilser la classe flash.media.StageVideo

#3 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 21 February 2018 - 18:45 PM

Bonjour pol2095,
J'ai déjà visité le lien flash.media.StageVideo , il est noté qu'il n'est pas possible de faire pivoter une vidéo dans ces conditions, sinon pour éventuellement désactiver "disableMediaCodec" je ne trouve pas ou il se situe, est-ce qu'il s'agit du fichier XML ?

#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 21 February 2018 - 19:01 PM

Il faut rajouter dans le fichier "application.xml" de ton projet air <disableMediaCodec>true</disableMediaCodec>

où as-tu vu qu'on ne pouvait pas appliquer de rotation avec StageVideo ?

#5 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 21 February 2018 - 19:54 PM

Partie du texte du lien:

Etant donné que le matériel du périphérique affiche la vidéo, un objet StageVideo est soumis aux contraintes suivantes par rapport à un objet Video :
  • Pour chaque fichier SWF, Flash Player limite à quatre le nombre d’objets StageVideo pouvant simultanément afficher des vidéos. La limite réelle peut néanmoins être inférieure, selon les ressources matérielles du périphérique. Sur les périphériques AIR pour TV, seul un objet StageVideo à la fois peut afficher une vidéo.
  • La durée vidéo n’est pas synchronisée avec la durée du contenu Flash qu’affiche le moteur d’exécution.
  • La zone d’affichage vidéo ne peut être qu’un rectangle. Il est impossible d’utiliser des zones d’affichage plus avancées, telles que des formes elliptiques ou irrégulières.
  • Vous ne pouvez pas faire pivoter la vidéo.
  • Vous ne pouvez pas mettre la vidéo en cache sous forme de bitmap ou utiliser BitmapData pour y accéder.
  • Vous ne pouvez pas appliquer des filtres à la vidéo.
  • Il est impossible de d’appliquer des transformations de couleur à la vidéo.
  • etc ...

Sinon après la modif du descripteur, il y a un message d'erreur;

Erreur lors de la création des fichiers.
Elément ou attribut non prévu ou inconnu dans le fichier descripteur de l'application.
aplication.disableMediaCodec is an unexpected element/attribute

#6 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 21 February 2018 - 21:19 PM

Ta version d'Adobe Air est trop ancienne.

Autre possibilité flash.display3D.textures.VideoTexture mais ça nécessite d'utiliser Stage3D, la vidéo peut pivoter en 3D, mais ça ne peut pas s'utiliser avec la display list classique.

#7 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 22 February 2018 - 19:01 PM

Salut pol2095,

Sur mon PC j'ai fait la mise à jour de AIR.28.0 mais sur mon logiciel Flash dispose de la version AIR 23.0, comment faut-il procéder pour faire la mise à jour ?

#8 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 22 February 2018 - 19:18 PM

Regarde dans les variables d'environnement de Windows, il doit y avoir un chemin vers Air SDK 23, modifie le.

#9 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 24 February 2018 - 08:13 AM

Alors, j'ai installé la dernière version Air mais ça ne donne rien, en interne ça fonctionne toujours sans problème mais sur le smartphone ça n'agit pas, la rotation, la position et le scale sont bien appliquées mais la diffusion du streaming reste toujours à la verticale.

#10 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 24 February 2018 - 19:53 PM

C'est sur Android ?

#11 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 24 February 2018 - 20:28 PM

Oui, absoluement, j'ai à nouveau ratissé Google mais je n'ai rien trouvé, j'ai testé également sur plusieurs smartphone et tablette mais le résultat est le mème, il n'y a que sur le PC que ça fonctionne correctement, ça m'embarrasse vraiment d'être bloqué sur ce détail qui reste indispensable quand il s'agit de vidéo.
Eventuellement je pourrais peut-être importer la vidéo via Youtube mais je crois que le visionnage commence seulement quand la vidéo est entièrement chargée, c'est pas très bon l'utilisateur passe tout de suite à autre chose.

#12 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1749 messages

Posté 24 February 2018 - 20:46 PM

essaie ce code avec Starling (télécharge le swc)

Main.as
package
{
        import com.VideoT;
 
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
 
        import starling.core.Starling;
 
        public class Main extends Sprite
        {
                private var _starling:Starling = null;
         
                public function Main()
                {
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                 
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }
         
                public function init(event:Event):void{
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                 
                        _starling = new Starling(VideoT, stage);
                        _starling.antiAliasing = 1;
                        _starling.start();
                }
        }
}

com.VideoT.as
package com
{
        import flash.net.NetConnection;
        import flash.net.NetStream;
        import starling.core.Starling;
        import starling.display.Image;
        import starling.display.Sprite;
        import starling.events.Event;
        import flash.events.NetStatusEvent;
        import starling.textures.Texture;
        import starling.utils.deg2rad;

        public class VideoT extends Sprite
        {
                private var nc:NetConnection;
                private var ns:NetStream;
                private var texture:Texture;

                public function VideoT()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }

                private function init(e:Event):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                 
                        this.rotation = deg2rad( 10 );
                        core();
                }

                private function core():void
                {
                        nc = new NetConnection();
                        nc.connect(null);

                        ns = new NetStream(nc);
                        ns.play("ta_vidéo");
                        ns.addEventListener(NetStatusEvent.NET_STATUS, netstat);
                       
                        texture = Texture.fromNetStream(ns, 1, function():void
                        {
                                addChild(new Image(texture));
                        });
                        texture.root.onRestore = videoTexture_onRestore;
                }
         
                private function videoTexture_onRestore():void
                {
                        texture.root.attachNetStream(ns, function():void
                        {
                                addChild(new Image(texture));
                        });
                }
         
                private function netstat(stats:NetStatusEvent):void
                {
                          trace(stats.info.code);
                }
        }
}


#13 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 24 February 2018 - 21:04 PM

ok, je met ça en place et je reviens poster le résultat, merci à toi.

#14 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 24 February 2018 - 23:41 PM

Je ne suis pas sur d'avoir tout installé correctement (pas l'habitude), je n'ai aucun résultat, page blanche, je tenterait d'y voir un plus clair demain matin.

#15 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 407 messages

Posté 26 February 2018 - 18:41 PM

Bonjour,
Je n'ai pas reussi à faire fonctionner l'ensemble, cela dit j'ai trouvé la solution en convertissant le fichier vidéo "mp4" en "flv" et mon code fonctionne parfaitement, gros soulagement, merci pour ton aide pol2095.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP