Estoy usando NetStream.appendBytes() para reproducir un video local (sin servidor) en Adobe AIR. Me gustaría utilizar BitmapData.draw()
para tomar una imagen de la salida de vídeo, pero estoy consiguiendo este error:¿Cómo puedo usar BitmapData.draw con NetStream.appendBytes?
Error #2123: Security sandbox violation: BitmapData.draw: cannot access null. No policy files granted access.
He aquí algunos ejemplos de código:
package
{
import flash.display.Sprite;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.NetStreamAppendBytesAction;
import flash.utils.ByteArray;
import flash.display.BitmapData;
class ByteArrayPlayer extends Sprite
{
private var _ns:NetStream;
private var _nc:NetConnection;
private var _video:Video;
public function playVideo(path:String):void
{
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_video = new Video();
addChild(_video);
_video.attachNetStream(_ns);
_ns.play(null);
_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
var file:File = new File(path);
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var bytes:ByteArray = new ByteArray();
fileStream.readBytes(bytes);
_ns.appendBytes(bytes);
}
public function getImage(video:Video):BitmapData
{
var bit:BitmapData = new BitmapData(_video.width, _video.height);
bit.draw(_video); //This will cause the error
return bit;
}
}
}
Esto sólo muestra el uso de código para una explicación. El error ocurriría al llamar al método getImage mientras se reproduce el video. El error menciona un archivo de política no encontrado. Como el archivo se carga localmente, no hay realmente un lugar para colocar un archivo de política. ¿Hay alguna configuración de directiva en algún lugar que deba establecerse o la característica BitmapData.draw
simplemente no está disponible cuando se usa appendBytes
?
estoy en el mismo barco exacta como eras aunque, archivos están llegando desde una ubicación remota. Estaba usando el objeto urlstream para extraer los datos, y anexar como se desea wile modificando, localmente, los encabezados ... todo fue exitoso, pero antes de tratar de atrapar. Esencialmente me pegué un tiro en el pie. ¿Pudo superar los problemas o tiene alguna idea sobre cómo lograr esto con un servidor remoto? Actualmente estoy retirando FMS 4.5 para ver si eso resuelve el problema. Los documentos también apuntan en la dirección de Acceso Flash ... – stat
Después de una noche muy larga, simplemente descubrí que con Http Dynamic Streaming (HDS), el uso del método appendBytes(), no hay forma posible de realizar el píxel manipulación de nivel en el video decodificado. Una posibilidad que queda es piratear una bitcoin secundaria en los archivos f4f, pero eso realmente depende de qué controles se están realizando y si el AVM simplemente ignora todos los indicadores de política en el modelo de transmisión appendBytes ... – stat
¿Alguna vez se le ocurrió una solución para ¿esta? Me estoy encontrando con el mismo problema. – WesleyJohnson