Video in PaperVision 3D
Place video on to a polygon
Download Source Files
package { /* PaperBase class included in Download created by Papervision2.com http://papervision2.com/3-creating-a-papervision-base-template/ */ import PaperBase; import org.papervision3d.materials.VideoStreamMaterial; import org.papervision3d.objects.primitives.Plane; import flash.net.NetConnection; import flash.net.NetStream; import flash.media.Video; public class PaperVideo extends PaperBase { protected var sceneWidth:Number; protected var sceneHeight:Number; private var videoPlane:Plane; // Plane that VideoStreamMaterial gets textured to private var videoStreamMaterial:VideoStreamMaterial; // The type of texture that allows for video private var netConnection:NetConnection; private var video:Video; private var netStream:NetStream; // The NetStream class opens a one-way streaming connection between a Flash Player public function PaperVideo(){ stage.frameRate = 60; sceneWidth = stage.stageWidth sceneHeight = stage.stageHeight; init(sceneWidth,sceneHeight); // Calls init() function found in PaperBase class } override protected function init3d(): void { videoMaterial(); // Create video Material texture /* public function Plane( material:MaterialObject3D=null, width:Number=0, height:Number=0, segmentsW:Number=0, segmentsH:Number=0 ) */ // NOTE:The width and height parameters should match your video footage otherwise the video will be warped. videoPlane = new Plane( videoStreamMaterial, 480, 360, 10 , 10 ); videoPlane.scale = 2; default_scene.addChild(videoPlane); } public function videoMaterial() : void { var customClient:Object = new Object(); /* MetaDataHandler is a function that catches the metaData if you don't have this flash will throw an error */ customClient.onMetaData = metaDataHandler; /* When you use the NetConnection class, consider the following security model: Loading and playing an audio or video file is not allowed if the calling file is in a network sandbox and the file to be loaded is local. By default, loading and playing an audio or video file is not allowed if the calling file is local and tries to load and play a remote file. A user must grant explicit permission to allow this. */ netConnection = new NetConnection(); netConnection.connect(null); /* The NetStream class opens a one-way streaming connection between a Flash Player */ netStream = new NetStream(netConnection); netStream.client = customClient; netStream.play( "assets/video.f4v" ); /* By defulat videos are set width:320, height:240 - make sure you set the video to match the exsact pixel size of your video fottage otherwise the videos resiltions will get warped */ video = new Video(480,360); // In this example the video footage is 480w, 360h video.smoothing = true; // Makes video look a better especially if video is scaled - video.attachNetStream(netStream); /* public function VideoStreamMaterial ( video:Video, stream:NetStream , precise:Boolean = false, transparent:Boolean = false ) */ videoStreamMaterial = new VideoStreamMaterial(video, netStream, true, false); videoStreamMaterial.doubleSided = true; // Set texture viewable from both sides } private function metaDataHandler(infoObject:Object):void { trace("metaData"); } override protected function processFrame(): void { videoPlane.rotationY += .5; } } } |
WARNING - YOU CAN TEST LOCALY
Befor you can test localy you will need to change your Adobe Flash Player Security Settings. Otherwise your local video files will not play and give you an error. The two ways around this problem are upload you files to a webserver and test them from the internet or simple go to adobes website and edit your personal flash security settings.
ARE YOU GETTING THIS ERROR
of course you are. why? Well it is a volation of the Adobe Flash Player Security Settings.SecurityError: Error #2148: SWF file file:///C|PaperVideo.swf cannot access local resource assets/video.f4v. Only local-with-filesystem and trusted local SWF files may access local resources. at flash.net::NetStream/play() < THIS IS THE PROBLEM at PaperVideo/videoMaterial() at PaperVideo/init3d() at PaperBase/init() at PaperVideo() |
HOW to edit your Adobe Flash Player Security Settings
1.You must have an internet connection. Heaven forbid you are testing you flash vidoe app in the middle of a dessert with no internet connect. Becuase your out of luck you can only edit the security settings from online.
2. GO to this web page - this is also the same place you would go to allow flash to have acessse to your webcam.
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html
4. Add a new Trusted location. This tells your flash player that it is ok to asscess stremming ressocreus like the netStream class we use in this video example.
5. You can add a particale file, but its easyier to just add the folder where all you flash project are held.
6. Once you have added the trusted location your file willl no longer give you an error and you can test video applications localy.
2009-04-23