Domanda

Mi chiedo come utilizzare un VideoDisplay oggetto (definiti in MXML) per la visualizzazione di video in streaming da FMS via un NetStream.

Il Flex3 docs suggeriscono che questo è possibile:

La Visualizzazione Del Video ...supporta il progressive download su HTTP, streaming di Flash Media Server, e in streaming da un oggetto della Fotocamera.

Tuttavia, in seguito al docs tutto quello che posso vedere è un metodo attachCamera ().Non sembra essere un attachStream() metodo come il vecchio Video in oggetto.

Sembra che sia possibile riprodurre un file fisso servito su HTML utilizzando la proprietà di origine, ma non riesco a vedere niente su come collegare un NetStream.

Il vecchio Video oggetto sembra ancora esistere, anche se non è basata su un UIComponent e non sembra essere utilizzabili in MXML.

Ho trovato questo post del blog che mostra come farlo con un Video normale oggetto, ma mi piacerebbe molto di preferire l'uso di VideoDisplay (o qualcos'altro che può essere messo direttamente in MXML).

È stato utile?

Soluzione

Purtroppo non si può attachNetStream() solo su oggetto Video.Così si sono condannati a utilizzare em se si desidera ottenere i dati FMS.

Dal modo in cui metodo attachCamera() pubblica locale fotocamera video sul server in modo da essere attenti ;)

Altri suggerimenti

VideoDisplay è un wrapper su VideoPlayer, che , a sua volta è un Video sottoclasse.Purtroppo, il wrapper impedisce di collegamento di un esistente NetStream per l'oggetto Video.

Tuttavia, un riferimento a tale componente è tenuto in mx_internal spazio dei nomi, in modo che il seguente dovrebbe fare il trucco:

videoDisplay.mx_internal::videoPlayer.attachNetStream(incomingStream);
videoDisplay.mx_internal::videoPlayer.visible = true;

(è necessario importare il mx.core.mx_internal spazio dei nomi)

funziona.

mx:VideoDisplay live="true" autoPlay="true" source="rtmp://server.com/nomeapplicazione/streamname" />

che vi darà il video in diretta tramite un videodisplay...il problema è non usare un oggetto netconnection, si crea è proprio...che è quello che sto cercando di trovare un lavoro in giro per.

Qui un link di esempio su come utilizzare il video:http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="vertical"
    verticalAlign="middle"
    backgroundColor="white"
    creationComplete="init();">

<mx:Script>
<![CDATA[
    import mx.utils.ObjectUtil;

    private var nc:NetConnection;
    private var ns:NetStream;
    private var video:Video;
    private var meta:Object;

    private function init():void {
    var nsClient:Object = {};
    nsClient.onMetaData = ns_onMetaData;
    nsClient.onCuePoint = ns_onCuePoint;

    nc = new NetConnection();
    nc.connect(null);

    ns = new NetStream(nc);
    ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
    ns.client = nsClient;

    video = new Video();
    video.attachNetStream(ns);
    uic.addChild(video);
    }

    private function ns_onMetaData(item:Object):void {
    trace("meta");
    meta = item;
    // Resize Video object to same size as meta data.
    video.width = item.width;
    video.height = item.height;
    // Resize UIComponent to same size as Video object.
    uic.width = video.width;
    uic.height = video.height;
    panel.title = "framerate: " + item.framerate;
    panel.visible = true;
    trace(ObjectUtil.toString(item));
    }

    private function ns_onCuePoint(item:Object):void {
    trace("cue");
    }
]]>
</mx:Script>

<mx:Panel id="panel" visible="false">
    <mx:UIComponent id="uic" />
    <mx:ControlBar>
    <mx:Button label="Play/Pause" click="ns.togglePause();" />
    <mx:Button label="Rewind" click="ns.seek(0); ns.pause();" />
    </mx:ControlBar>
</mx:Panel>
</mx:Application>

Ho visto il codice di esempio in cui qualcosa di come funziona:

// Connect to the video stream in question.
var stream:NetStream = new NetStream( chatNC );
stream.addEventListener( NetStatusEvent.NET_STATUS, handleStreamStatus );
stream.addEventListener( IOErrorEvent.IO_ERROR, handleIOError );

// Build the video player on the UI.
var video:Video = new Video(246, 189);
var uiComp:UIComponent = new UIComponent();
uiComp.addChild( video );
uiComp.width = 246;
uiComp.height = 189;
stream.play( streamName );
video.attachNetStream( stream );
video.smoothing = true;
video.width = 246;
video.height = 189;
view.videoPlayerPanel.removeAllChildren();
view.videoPlayerPanel.addChild( uiComp );

Ma io in realtà non può farlo funzionare in me stesso.Vi posto qui di seguito, se riesco a capire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top