2010-11-14 1 views
4

J'utilise Flash Builder et j'ai créé un projet Flex d'application d'étincelles qui diffusera de la vidéo à partir de la caméra locale. Si j'utilise mx.controls.VideoDisplay; il n'y a pas de problème puisqu'il a la méthode attachCamera(camera). Mais le composant VideoDisplay de Spark n'a pas cette méthode. Je sais que je peux utiliser les commandes mx l'intérieur d'une application Spark mais je veux savoir:Comment attacher une caméra à Spark.components.VideoDisplay

  • Quelle est la différence réelle entre spark.components.VideoDisplay et mx.controls.VideoDisplay? Comment associer l'appareil photo à spark.components.VideoDisplay?
  • Y at-il des avantages si je vais avec étincelle (puisque c'est plus récent dans la bibliothèque mx)?

merci.

EDIT: Dans la documentation ceci est mentionné: "A partir de Flex 4.0, Adobe vous recommande d'utiliser la classe spark.components.VideoPlayer comme une alternative à cette classe (mx.controls.VideoDisplay)"

Répondre

14

Voici les détails pour obtenir ce travail:

import mx.events.FlexEvent; 

import org.osmf.net.StreamType; 

import spark.components.mediaClasses.DynamicStreamingVideoItem; 
import spark.components.mediaClasses.DynamicStreamingVideoSource; 

private var _cam:DynamicStreamingVideoSource = new DynamicStreamingVideoSource(); 
private var _dynVideoSource:DynamicStreamingVideoSource; 

protected function application1_creationCompleteHandler(event:FlexEvent):void 
{ 

    _dynVideoSource=new DynamicStreamingVideoSource(); 

    var videoItems:Vector.<DynamicStreamingVideoItem>; 
    videoItems=new Vector.<DynamicStreamingVideoItem>(); 
    videoItems[0]=new DynamicStreamingVideoItem(); 

    _dynVideoSource.host= ""; 
    _dynVideoSource.streamType=StreamType.LIVE; 
    _dynVideoSource.streamItems=videoItems; 

    mycam.source=_dynVideoSource; 

    var cam:Camera = Camera.getCamera(); //Camera.names[0]); 
    cam.setMode(640, 480, 15); 
    cam.setQuality(0, 80); 
    mycam.videoObject.attachCamera(cam); 
} 
+0

Merci pour le code merveilleux. Pour enlever la caméra, faites simplement ceci: cam.videoObject.visible = false; cam.source = null; – Codebeat

+4

qu'est-ce que 'mycam'? – csomakk

+1

mycam est spark VideoDisplay. – Anas

4

Tout droit, la réponse est que vous ne pouvez pas connecter une caméra au Spark VideoDisplay. Pardon. J'essayais d'y arriver aussi, mais j'ai dû par défaut mx VideoDisplay et il n'y a rien de mal à l'utiliser :)

Spark est plus récent et je préfère l'utiliser aussi souvent que possible, mais dans ce cas, vous juste besoin d'utiliser le contrôle MX. Ça arrive.

+2

La bonne réponse devrait être celui de Tony à la place. Il n'est pas nécessaire d'utiliser l'espace de noms mx lorsque le composant spark videoDisplay le supporte réellement. La légère différence est que vous devriez joindre à videoDisplay.videoObject.attachCamera() au lieu de videoDisplay.attachCamera(). – JSancho

+0

Lorsque cela a été écrit, c'était la bonne réponse. Ils ont récemment ajouté cette fonctionnalité au SDK. –

2

J'ai essayé d'attacher l'appareil photo à videoDisplay.videoObject - mais le videoObject était toujours null, ce qui génère une erreur.

Pour résoudre que je créé un DynamicStreamingVideoObject factice et passé comme source

_cam = new DynamicStreamingVideoSource(); 

<s:VideoDisplay id="mycam" source="_cam" /> 

puis, dans le gestionnaire creationComplete de l'application Je l'ai fait

var cam:Camera = Camera.getCamera(); 
mycam.videoObject.attachCamera(cam); 

cette résolu le problème.

+3

devrait être source = "{_ cam}" mais de toute façon cela ne résout pas le problème: mycam.videoObject est toujours NULL – yarek

2

recherchions une solution à cela et trouvé les ci-dessous

var cam:Camera = Camera.getCamera(); 
cam.setMode(320, 240, 15); 
cam.setQuality(0, 0); 
var myCam:Video = new Video(320,240); 
myCam.attachCamera(cam); 
myVideo.addChild(myCam); 

grâce

0

Shorter solution de contournement:

<s:VideoDisplay id="camVideoDisplay" 
       source="dummy" 
       autoPlay="false" 
       autoDisplayFirstFrame="false"/> 

Dans ce cas, l'objet de la vidéo peut ensuite être référencée camVideoDisplay.videoObject, .: par exemple

camVideoDisplay.videoObject.attachCamera(..); 
Questions connexes