tour examples flex flash actionscript air

flex - examples - Reproduzca video desde un archivo local utilizando Adobe AIR



flex sdk installer (2)

Me gustaría reproducir videos, así como mostrar imágenes y posiblemente otro contenido flash usando adobe air, y leer desde el sistema de archivos local. He estado buscando API y todavía no he podido conectar los puntos.

Sé de flash.filesystem.File y flash.filesystem.FileStream y he experimentado con la carga y lectura de archivos. Creo que puedo cargar imágenes de esta manera, pero no lo he intentado.

En cuanto a video:

mx.controls.VideoDisplay : parece aceptar un archivo: // URI para el origen, pero no puedo hacer que funcione.

flash.media.Video - acepta un NetStream o puede cargar video directamente desde una entrada de video, parece que no puede encontrar una manera de hacer referencia a un archivo local

¿Puede alguien ayudarme aquí? Específicamente, quiero cargar y reproducir video directamente desde el disco local, no desde un servidor web o un servidor de archivos en tiempo real ... supongo que no hay conectividad de red.

Pregunta ligeramente relacionada: cargar un video desde el sistema de archivos local ... (pero mi pregunta no involucra un navegador web)


Intente agregar "-use-network = false" a su configuración del compilador Flex. Esto le dará acceso para cargar recursos locales, que podrían ser la fuente del problema; las reglas de sandboxing son algo sensibles, por lo que si está seguro de que no necesitará conectividad de red, ajustar esta configuración puede relajar un poco las cosas.

También se encontró con esto, que también podría estar relacionado:

http://soenkerohde.com/2008/06/playing-local-files-with-air/

En mi caso, sin embargo, solo probando brevemente, los dos trabajos siguientes en compilaciones de depuración y liberación, sin modificar la configuración del compilador, en caso de que sean solo los literales que está utilizando para hacer referencia a los FLV:

<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:VideoDisplay source="D:/Data/Projects/Flex 3/AirLocalVideo/bin-debug/NightSky.flv" /> </mx:WindowedApplication> <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:VideoDisplay source="file://D:/Data/Projects/Flex 3/AirLocalVideo/bin-debug/NightSky.flv" /> </mx:WindowedApplication>

... así que supongo que es difícil de diagnosticar sin un poco más de información. Espero que esto ayude, estaré atento a los comentarios si quieres compartir un poco más de información.


Se requiere que el uso que tengo en mente sea de uso programático. Estaba buscando una forma de hacerlo directamente con ActionScript.

Finalmente me topé con la solución que esperaba ... usando un objeto NetStream, pero (de forma no intuitiva) puedes usar esto para acceder a los archivos locales también:

private function playVideo():void { var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); # onMetaData listener is required otherwise you get a ReferenceError var client:Object = new Object(); client.onMetaData = function(metadata:Object):void { trace(metadata.duration); } ns.client = client; var v:Video = new Video(); v.attachNetStream(ns); stage.addChild(v); var f:File = new File("/tmp/test.flv"); ns.play(f.url); }