the tips: Error #2123: Security sandbox violation: BitmapData.draw: cannot access null. No policy files granted access.
Here is some sample code
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();
_ns = new NetStream(_nc);
_ns.checkPolicyFile = true;
_video = new Video();
var file:File = new File(path);
var fileStream:FileStream = new FileStream();
var bytes:ByteArray = new ByteArray();
public function getImage(video:Video):BitmapData
var bit:BitmapData = new BitmapData(_video.width, _video.height);
bit.draw(_video); //This will cause the error
This is only sample code use for an explanation. The error would happen when calling the getImage method while the video is playing.
The error mentions a policy file not found. Since the file is loaded locally there isn't really a place to put a policy file.
Is there a policy setting somewhere that needs to be set or is the
BitmapData.draw feature just not available when using
It is a local flv file, not an ramp stream from a server.
you're still crossing a security sandbox. to remedy a local security sandbox issue, adjust your fp settings: http://www.macromedia.com/support/documentation/en/flashplayer/help/se ttings_manager04.html
I can't offer a solution other than to use _ns.play(path); instead - then you should not get the error. AIR should not throw security errors so may be you can log this as a bug at Adobe?
you can get security errors with air, even with local content, if you're manipulating content outside certain (i can't remember which but i think anything outside the apps own directory is ok) directories.
That will not work in AIR.
Also, if you use NetStream.play(path) you will not get the security error, therefore it's nothing to do with the file being outside of application sandbox.
Does this actually stream to a Flash Media Server or similar? If so, can you just skip the draw function for now? I assume you're using it as a preview monitor window. Can you see the video through server?
If you want to capture a video with BitmapData.draw() you can do so without any issues if you do not use ByteArray. Do you have a specific reason to use ByteArray?
even time past and flashplayer upgraded,old problem is still old one.
the thing i wanna to do is a open a local video file into my swf app,then play this video,meanwhile,capture the current video frame.
my code is similar with lanphonexm
Europe, Middle East and Africa