Pregunta

Me pregunto cómo utilizar un VideoDisplay objeto (definido en el MXML) para la visualización de vídeo de streaming de FMS a través de un NetStream.

El Flex3 docs sugieren que esto es posible:

La Pantalla De Vídeo ...admite la descarga progresiva a través de HTTP, la transmisión desde el Flash Media Server y de la transmisión de un objeto Camera.

Sin embargo, más tarde en el docs todo lo que puedo ver es un attachCamera() método.No parece ser un attachStream() método, como el antiguo objeto de Vídeo tiene.

Parece que puede reproducir un archivo fijo servido a más de HTML mediante el uso de la propiedad de origen, pero no veo nada acerca de cómo adjuntar un NetStream.

El viejo Video objeto todavía parece existir, aunque no se basa en la UIComponent y no parece ser utilizable en MXML.

He encontrado este blog que muestra cómo hacerlo con regularidad un objeto de Vídeo, pero me gustaría mucho que prefieren usar VideoDisplay (o cualquier otra cosa que se puede poner directamente en el MXML).

¿Fue útil?

Solución

Desafortunadamente, usted puede attachNetStream() sólo en el objeto de Vídeo.Así que usted está condenado al uso em si desea obtener los datos de FMS.

Por el camino attachCamera() método publica local de la cámara de vídeo en el servidor para ser cuidado ;)

Otros consejos

VideoDisplay es un contenedor en VideoPlayer, que a su vez es un Video subclase.Por desgracia, la envoltura impide la fijación de un existente NetStream para el objeto de Vídeo.

Sin embargo, una referencia a que el componente se lleva a cabo con el mx_internal espacio de nombres, por lo que el siguiente debe hacer el truco:

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

(usted necesita para importar el mx.core.mx_internal espacio de nombres)

funciona.

mx:VideoDisplay en vivo="true" autoPlay="true" source="rtmp://servidor.com/appname/streamname" />

que le dará vídeo en directo a través de un videodisplay...el problema es que no uso existente en un objeto netconnection, crea su propia...que es lo que estoy tratando de encontrar un trabajo en torno a los.

Aquí un enlace de ejemplo sobre cómo utilizar el vídeo: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>

He visto el código de ejemplo donde algo como esto funciona:

// 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 );

Pero realmente no puedo conseguir que funcione a mí mismo.Voy a publicar aquí más tarde si puedo averiguar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top