Well, my hack worked. I created a new package in my project. Then I copied the Flex video classes into the package folders and hacked those (about 50 lines of code in 10 files - less not counting the package name changes). Then I created a new video event - BUFFERINGPCT. The VideoEvent object now contains a numeric property named "bufferingProgress." The hack works like a charm!
Now I can track buffering progress using my hacked version of the <mx:videoDisplay> component. The question is how do I get Adobe to add this type of functionality to the framework? Greg & Abdul, thanks for all your responses. I learned much and I hope other find this thread useful. Chris --- In flexcoders@yahoogroups.com, "Chris Simeone" <[EMAIL PROTECTED]> wrote: > > Hi All, > > I've been trying to create a "Buffering" progress bar for streaming > FLV (via FMS) with the <mx:videoDisplay> component. But, the > videoDisplay is not firing "progress" events for some odd reason. So I > changed my strategy and started using the netStream object. > > The video is streaming via FMS, but the netStream "bytesLoaded" and > "bytesTotal" properties are always zero. Any ideas what I may be doing > wrong. The code's below. > > Also, it would be great if anyone can show how to pull this of with > the <mx:videoDisplay> component as well!!! > > Thanks! > Chris > > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" > layout="vertical" horizontalAlign="left" > creationComplete="onCreationComplete();"> > <mx:Script> > <![CDATA[ > > ////////////////////////////////////////////////////////////////////////// > import mx.events.VideoEvent; > import myComponents.*; > import flash.events.*; > import flash.net.*; > import flash.media.Video; > import mx.controls.*; > import mx.core.UIComponent; > > ////////////////////////////////////////////////////////////////////////// > private var nc:NetConnection; > private var stream:NetStream; > private var fmsUrl:String; > private var flvName:String; > private var video:Video; > private var loaded_interval:Number; > > ////////////////////////////////////////////////////////////////////////// > NetConnection.defaultObjectEncoding = > flash.net.ObjectEncoding.AMF0; > > ////////////////////////////////////////////////////////////////////////// > public function onCreationComplete():void > { > nc = new NetConnection(); > configureListeners(nc); > > var videoHolder:UIComponent = new UIComponent(); > videoHolder.setActualSize(700, 525); > > video = new Video(); > configureListeners(video); > > videoHolder.addChild(video); > video.x = 0; > video.y = 0; > > fmsUrl = "rtmp://localhost/test_video"; > flvName = "testVideo"; > theBox.addChild(videoHolder); > nc.connect(fmsUrl); > } > ///////////////////////////////////////////////////////////// > private function > configureListeners(dispatcher:IEventDispatcher):void > { > > dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, > onSecurityError); > dispatcher.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError); > dispatcher.addEventListener(NetStatusEvent.NET_STATUS, > onNetStatus); > dispatcher.addEventListener(ProgressEvent.PROGRESS, > onProgress); > dispatcher.addEventListener(Event.ENTER_FRAME, > onEnterFrame); > } > ///////////////////////////////////////////////////////////// > private function connectStream():void > { > if (stream) > stream.close(); > > stream = new NetStream(nc); > configureListeners(stream); > video.attachNetStream(stream); > stream.bufferTime = 10; > stream.play(flvName); > stream.client = this; > } > ///////////////////////////////////////////////////////////// > private function onNetStatus(event:NetStatusEvent):void > { > trace("onNetStatus: " + event); > switch (event.info.code) > { > case "NetConnection.Connect.Success": > > trace("NetConnection.Connect.Success"); > connectStream(); > break; > case "NetConnection.Connect.Failed": > trace("NetConnection.Connect.Failed"); > break; > case "NetStream.Buffer.Empty": > trace("NetStream.Buffer.Empty"); > break; > case "NetStream.Buffer.Full": > trace("NetStream.Buffer.Full"); > break; > case "NetStream.Play.StreamNotFound": > trace("stream not found: " + flvName); > break; > } > } > ///////////////////////////////////////////////////////////// > private function onEnterFrame(event:Event):void > { > if(stream == null) return; > var loadpct:Number = stream.bytesLoaded / > stream.bytesTotal * 100; > trace("onEnterFrame: " + event + " Loaded: " + loadpct > + "%"); > } > ///////////////////////////////////////////////////////////// > private function onProgress(event:ProgressEvent):void > { > trace("onProgress: " + event); > } > ///////////////////////////////////////////////////////////// > private function onSecurityError(event:SecurityErrorEvent):void > { > trace("onSecurityError: " + event); > } > ///////////////////////////////////////////////////////////// > private function onAsyncError(event:AsyncErrorEvent):void > { > trace("onAsyncError: " + event); > } > ///////////////////////////////////////////////////////////// > public function onMetaData(info:Object):void > { > trace("metadata: duration=" + info.duration + " width=" > + > info.width + " height=" + info.height + " framerate=" + info.framerate); > } > ///////////////////////////////////////////////////////////// > public function onCuePoint(info:Object):void > { > trace("cuepoint: time=" + info.time + " name=" + > info.name + " > type=" + info.type); > } > ///////////////////////////////////////////////////////////// > public function showMessage(msg:String):void > { > trace("showMessage: " + msg + "\n"); > } > ///////////////////////////////////////////////////////////// > ]]> > </mx:Script> > > <mx:HBox id="theBox" borderStyle="solid"></mx:HBox> > </mx:Application> > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/