Ryan y James están en lo cierto: la forma correcta es probablemente de extraer marcos en el momento de la carga/transcodificación. Pero si eso no es una opción, puede optar por usar algún tipo de imagen propia predeterminada/placeholder (algo genérico o de alguna manera adecuado para todos los videos cuyos pulgares aún no se han capturado), y simplemente use DisplayObject-ness de VideoDisplay para agarrar y luego subir un marco a su servidor, por ejemplo:
<mx:Script>
<![CDATA[
var captured:Boolean;
private function creationCompleteHandler(event:Event):void
{
videoDisplay.source = "http://yourserver/yourvideo.flv";
}
private function videoDisplay_playheadUpdate(event:VideoEvent):void
{
if (!captured && videoDisplay.playheadTime >= 10)
capture();
}
private function capture():void
{
var bmpData:BitmapData = new BitmapData(videoDisplay.width, videoDisplay.height);
bmpData.draw(videoDisplay);
captured = true;
// Now just upload the byte array to your server for the next user
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
// ... etc.
}
]]>
</mx:Script>
<mx:VideoDisplay id="videoDisplay" playheadUpdate="videoDisplay_playheadUpdate(event)" />
una vez más, tal vez no es la solución más elegante, pero sin duda funciona. De esta forma, el primer usuario ve la imagen genérica, pero a partir de entonces todos los usuarios obtienen la miniatura generada. (Que, por supuesto, ya habrás cargado y asociado correctamente). ¿Tiene sentido?
Terminé haciendo algo muy similar a esto (probablemente debería haber estipulado que la aplicación debe poder funcionar sin conexión, así que no tengo acceso fácil al servidor la mayor parte del tiempo) pero terminé codificando un truco que implicaba cargar el video y pausarlo en el marco que necesitaba. ¡Gracias! – onekidney
Impresionante, me alegro de que haya ayudado. –