I tested the video player SWF online... Just as I thought; it didn't make a difference.
I need to figure out how the Flash CS4/AS2 demo is able to successfully get a snapshot and why the Flex/AS3 video player is not. --- In flexcoders@yahoogroups.com, "jwebbsuccess" <jw...@...> wrote: > > I am testing the video player Flex app over 'file:///C:/' but the > Flash CS4 demo is technically on 'file:///C:/' as well. Both are in > subdirectories of my desktop/document folder and both are trying to > access the very same file over RTMP. Here's the official error from > the video player: > > --------- > Security sandbox violation: BitmapData.draw: file:///C:/<...>/bin- > debug/BaseFLVPlayer.swf cannot access rtmp://<...>/vod/. No policy > files granted access. at flash.display::BitmapData/draw() > --------- > > I think I'm going test the video player SWF online instead of on my > desktop. I don't think it will help but I've got no other ideas at > this point. > > > --- In flexcoders@yahoogroups.com, Alex Harui <aharui@> wrote: > > > > Are you testing this over http:// or file:// > > > > If file:// crossdomain.xml may not be in play. > > > > From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] > On Behalf Of jwebbsuccess > > Sent: Friday, January 16, 2009 11:50 AM > > To: flexcoders@yahoogroups.com > > Subject: [flexcoders] Security sandbox violation on Bitmapdata.draw( > rtmpVid ) despite crosspolicy.xml > > > > > > Take a look at this video player; notice there is an image on screen > > before the video begins playback: > > > > http://www.huffingtonpost.com/2009/01/14/obama-on-inauguration- > > you_n_157881.html > > > > I'm trying to create similar 'preview frame' functionality in my own > > custom-built Flex/AS3-based RTMP video player... I need my the > player > > to seek ahead to a given point in video, grab a snapshot for display > > as a preview frame, then seek back to the beginning before the user > > initiates playback... Or something like that. > > > > I've already got demo code (AS2) for taking a snapshot of a video > > after it has started playing. The problem is when I try to write > code > > to do the same thing in my AS3 player, I get sandbox violation error > > as if I were running the demo SWF and my video player SWF on > different > > servers. Both SWFs are in document folders on my computer... The > > RTMP host and I have confirmed that the permissions for using > > 'BitmapData.draw( obj )' on a video stream are in place (the demo > > works) so I've got no idea why I'm getting the sandbox violation > > error. > > > > Can anyone help me to get a snapshot of a video stream and then > return > > the stream to the beginning before the user initiates playback? I've > > included the FLA for the demo in Flash CS4 and CS3 format: > > > > http://www.futurewebstudios.com/bitMapViewer2.zip > > > > The demo code is attached separately: > > > > ------------------------------- > > > > import flash.display.BitmapData; > > > > var nc:NetConnection = new NetConnection(); > > var ns:NetStream; > > var myBitmapData:BitmapData = new BitmapData( 160, 120, false, > > 0x00CCCCCC ); > > var mc_1:MovieClip = this.createEmptyMovieClip( "mc", > > this.getNextHighestDepth() ); > > > > btnCap.addEventListener( "click", captureVid ); > > nc.connect( "rtmp://okojcizj1r.rtmphost.com/vod" ); > > //nc.connect( "rtmp://localhost/vod" ); > > > > nc.onStatus = function( p_o ) > > { > > var code = p_o.code; > > trace( code ); > > if ( code == "NetConnection.Connect.Success" ) > > { > > playLive(); > > } > > }; > > > > function playLive() > > { > > trace( "playLive" ); > > mc_1._x = 195; > > mc_1._y = 15; > > > > ns = new NetStream( nc ); > > myVideo.attachVideo( ns ); > > myVideo.attachAudio( ns ); > > ns.play( "kaye_400" ); > > ns.onStatus = function( p_o ) > > { > > trace( p_o.code ); > > }; > > mc_1.attachBitmap( myBitmapData,this.getNextHighestDepth() ); > > } > > > > function captureVid() > > { > > trace( "captureVid" ); > > myBitmapData.draw( myVideo ); > > } > > > > ------------------------------- > > > > I've also attached a piece of the code in my video player app so you > > can see what I'm trying to do; if you need to see more of the code, > > let me know and I'll send it to you: > > > > ------------------------------- > > > > public function getScreenCaptureData( seekTime:Number, > > vidWidth:Number, vidHeight:Number ):Bitmap > > { > > var startAt:Number = _netStream.time; > > > > trace( this + " getScreenCaptureData --> startAt: " + startAt > > + ", seekTime: " + seekTime + ", vidWidth: " + vidWidth + ", > > vidHeight: " + vidHeight ); > > > > _netStream.seek( seekTime ); > > var tempVid:Video = new Video( vidWidth, vidHeight ); > > tempVid.attachNetStream( _netStream ); > > var bd:BitmapData = new BitmapData( vidWidth, vidHeight ); > > bd.draw( tempVid ); > > _netStream.seek( startAt ); > > > > //to be continued... > > > > return new Bitmap(); > > } > > > > ------------------------------- > > > > Thanks in advance for your help. > > >