From what I recall, seek accuracy is dependant on the keyframe rate of your 
FLV 
(which is not the same as the frame rate of your FLV), and not fps of the app. 
It's a tradeoff: if you encode your FLV with a high keyframe rate, your 
filesize 
will be astronomical, and you'd better streaming that sucka. And I don't 
beleive 
you can create cuepoints at a higher interval than your FLV keyframe rate.

And taking BitmapData on a video has security restrictions, so you'd want to 
look into them, and for a live playing video that would be hugely processor 
intensive and land up possibly slowing down playback, which would defeat the 
point.

So my advice is increase the keyframe encoding rate of your FLV, and if the 
filesize gets too large you'll have to stream it. That's your only practical 
solution.

_______________________________________________________________

Joseph Balderson, Flash Platform Developer | http://joeflash.ca


liu_bai_un wrote:
> I'm trying to figure out how to get more accurate seek times (to
> milliseconds). I've been using the VideoDisplay and imported Flash's
> FLVPlayback component to Flex. For the reference video I'm using, I
> get about a 3-4 second accuracy, when the frame rate is at 30fps.
> 
>>From my understanding, all video files loaded into Flex/AIR are
> considered progressive downloads, and therefore can only seek to
> keyframes*.
> 
> I've been messing around with a couple ideas:
> - skipping to the previous keyframe, play, and pause on exact time
> - extending videoplayback/video class to take a "screenshot" of the
> frames in between
> - dynamically creating cuepoints for the video at 100 ms intervals
> 
> It would be great if you guys comment on other suggestions or the
> feasiblility of the above solutions.
> 
> 
> 
> 
> * Just for reference, this is the javadocs for FLVPlayback.seek():
> 
> "Seeks to a given time in the file, specified in seconds, with a
> precision of three decimal places (milliseconds).
> 
> For several reasons, the playheadTime property might not have the
> expected value immediately after you call one of the seek methods or
> set playheadTime to cause seeking. First, for a progressive download,
> you can seek only to a keyframe, so a seek takes you to the time of
> the first keyframe after the specified time. (When streaming, a seek
> always goes to the precise specified time even if the source FLV file
> doesn't have a keyframe there.) Second, seeking is asynchronous, so if
> you call a seek method or set the playheadTime property, playheadTime
> does not update immediately. To obtain the time after the seek is
> complete, listen for the seek event, which does not start until the
> playheadTime property has updated."
> 
> 
> ------------------------------------
> 
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Search Archives: 
> http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links
> 
> 
> 
> 

Reply via email to