23
Ghetto Greenscreen
I built a greenscreen for chroma keying video/photos in my studio for about 5 dollars. Grabbed about six sheets of neon-green poster board from a local store and used some other bits I had lying around; easel, cardboard, non-reflective tape, staple gun, duct tape…
You can see the result below! Admittedly ghetto… but for my current purposes, it will work just fine. You can see the seams in the photo but this isn’t a big deal as depth of field and After Effects can both be used to get around something like that. It’s large enough that I can place it a few feet behind the subject without issue, so blurring it with depth of field in the camera is probably a good option. You can see here that it’s pretty evenly lit without any special lighting- though I do have some lights to be used in case they are needed.

As a test, I grabbed this rabbit and snapped a quick photo.

After a few seconds of keying in After Effects – Parisian Rabbit.

30
Creative Moments / ‘Pistachio’
It’s really interesting to me how creative impulses can arrive in little, concentrated spurts. This is how ideas usually manifest themselves to me, and when they do, I like to grab ahold and just go with it.
The past few days I was feeling kinda dry, creatively. Happens every once in awhile and to be honest- provides me with some dark moments. The good thing is that when I experience a period like this, it often means that my inspiration will pick up in a day or so. If I time things right, I can get some really good stuff out of this cycle of mine.
This is exactly the case with ‘Pistachio’, a 30 second piece inspired by a contest held at http://www.getcrackin.com/. I just read about this in passing via Twitter, and immediately some ideas shot through my head like lightening. I absolutely love moments like this. Luckily, I had a few hours to devote to it and below is the result:
Edited down in Premiere Pro CS4 from about a minute of footage in two takes captured ‘live’ from a Canon SD video camera. Compositing done in After Effects CS4 with sound recorded through Soundbooth. Was a great experience messing around with After Effects after a very long time.
Now, I knew from the get go that this would never be accepted by the judges. No way. But that isn’t the point with this sort of thing, is it?
3
Educause 2009: Streaming Video for Education
I’d encourage anyone going to Educause in Denver to stop by the Adobe Booth (#909) for a theater presentation by myself and John Schuman.
Streaming Video for Education
Wednesday, November 4
12:45pm–1:15pmIn this session, you will learn the inner workings of a real-world video solution for higher education based on Adobe Flash technology. Join John Schuman, Adobe education solutions architect, and Joseph Labrecque, senior multimedia application developer at the University of Denver and an Adobe Education Leader, as they take you through the underlying technologies that went into the creation of the amazing video applications of the University of Denver.
UPDATE: Here are the slides in PDF format.
For more information, check out the previous seminar recordings.
20
YouTube AS3 Example Using Flash Professional
Based on comments received in my previous article I’ve decided to also produce an example using Flash Professional CS4. The approach is different in some ways, but very similar in others.
View the Example:
References:
The ActionScript 3 YouTube Chromeless Player is Now Live
YouTube ActionScript 3.0 Player API Reference
Download the Example:
YouTubeAS3_CS4.zip
View Code for Flash Professional:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | package { import flash.system.Security; import flash.display.MovieClip; import flash.display.Loader; import flash.events.Event; import flash.net.URLRequest; import fl.data.DataProvider; import fl.controls.ComboBox; import fl.controls.TextArea; public class YouTubeAS3 extends MovieClip { public var VidHolder:MovieClip; public var VidSelection:ComboBox; public var traceArea:TextArea; private var player:Object; private var loader:Loader; private var vidCollection:DataProvider; public function YouTubeAS3():void { Security.allowInsecureDomain("*"); Security.allowDomain("*"); vidCollection = new DataProvider(); vidCollection.addItem({data:"KhAplw0Z8zQ", label:"Wreckage"}); vidCollection.addItem({data:"d54AA2YWll0", label:"Window View"}); vidCollection.addItem({data:"Sv83GeuyN8A", label:"The Fearless Man"}); vidCollection.addItem({data:"9t5guYGbuZs", label:"Ephemeral"}); VidSelection.dataProvider = vidCollection; VidSelection.addEventListener(Event.CHANGE, cueVideo); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); } private function onLoaderInit(event:Event):void { VidHolder.addChild(loader); loader.content.addEventListener("onReady", onPlayerReady); loader.content.addEventListener("onError", onPlayerError); loader.content.addEventListener("onStateChange", onPlayerStateChange); loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange); } private function onPlayerReady(event:Event):void { traceArea.text += "player ready:" + Object(event).data + "\r"; player = loader.content; player.setSize(VidHolder.width, VidHolder.height); VidSelection.selectedIndex = 0; VidSelection.dispatchEvent(new Event(Event.CHANGE)); } private function cueVideo(event:Event):void { traceArea.text += "switch to:" + event.target.selectedItem.label + "\r"; player.cueVideoById(event.target.selectedItem.data); } private function onPlayerError(event:Event):void { traceArea.text += "player error:" + Object(event).data + "\r"; } private function onPlayerStateChange(event:Event):void { traceArea.text += "player state:" + Object(event).data + "\r"; } private function onVideoPlaybackQualityChange(event:Event):void { traceArea.text += "video quality:" + Object(event).data + "\r"; } } } |
14
Google FINALLY Releases AS3 Player for YouTube
Absolutely wonderful that Google has finally released an AS3 version of their chromeless player for use in Flex/AS3 projects. No more weird proxy hacks!!!
I’ve thrown together a quick example and have posted the code below. Really simple stuff to set up and use. Google seems to be more and more friendly to the Flash world lately. There are at least two major projects I’m going to implement this in as soon as I get the time to do so. Very nice- I’m quite pleased!
View the Example:
References:
The ActionScript 3 YouTube Chromeless Player is Now Live
YouTube ActionScript 3.0 Player API Reference
Download the Example:
YouTubeAS3.fxp
View Code for Flash Builder 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" applicationComplete="init()" width="480" height="500"> <fx:Script> <![CDATA[ import flash.system.Security; import mx.collections.ArrayCollection; import mx.events.ListEvent; import flash.display.Loader; import flash.events.Event; private var player:Object; private var loader:Loader; [Bindable] private var vidCollection:ArrayCollection; private function init():void { Security.allowInsecureDomain("*"); Security.allowDomain("*"); vidCollection = new ArrayCollection(); vidCollection.addItem({data:"KhAplw0Z8zQ", label:"Wreckage"}); vidCollection.addItem({data:"d54AA2YWll0", label:"Window View"}); vidCollection.addItem({data:"Sv83GeuyN8A", label:"The Fearless Man"}); vidCollection.addItem({data:"9t5guYGbuZs", label:"Ephemeral"}); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); } private function onLoaderInit(event:Event):void { VidHolder.rawChildren.addChild(loader); loader.content.addEventListener("onReady", onPlayerReady); loader.content.addEventListener("onError", onPlayerError); loader.content.addEventListener("onStateChange", onPlayerStateChange); loader.content.addEventListener("onPlaybackQualityChange", onVideoPlaybackQualityChange); } private function onPlayerReady(event:Event):void { traceArea.text += "player ready:" + Object(event).data + "\r"; player = loader.content; player.setSize(VidHolder.width, VidHolder.height); VidSelection.selectedIndex = 0; VidSelection.dispatchEvent(new ListEvent(ListEvent.CHANGE, true, false)); } private function cueVideo(event:ListEvent):void { traceArea.text += "switch to:" + event.target.selectedItem.label + "\r"; player.cueVideoById(event.target.selectedItem.data); } private function onPlayerError(event:Event):void { traceArea.text += "player error:" + Object(event).data + "\r"; } private function onPlayerStateChange(event:Event):void { traceArea.text += "player state:" + Object(event).data + "\r"; } private function onVideoPlaybackQualityChange(event:Event):void { traceArea.text += "video quality:" + Object(event).data + "\r"; } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <mx:Canvas id="VidHolder" left="0" right="0" top="0" bottom="140"></mx:Canvas> <mx:ComboBox id="VidSelection" editable="false" dataProvider="{vidCollection}" left="10" right="10" bottom="110" height="22" change="cueVideo(event)"></mx:ComboBox> <s:TextArea left="10" right="10" editable="false" top="398" bottom="10" id="traceArea"/> </s:Application> |










