For the love of god Adobe please, please, please fix NetStream. At the very minimum make it so the NetStream.Seek.Notify event is only fired after NetStream.time has been updated.
Also–I want to sue Adobe for false advertising when it comes to h.264 seeking not being tied to keyframes. Yes there’s an index and yes Flash Player spits out a metadata event that lists those seekpoints (very cool stuff), but that index is made of times that correspond to keyframes (at least this seems to be the case with the videos created by MainConcept’s SDK that I’ve been working with. If keyframes aren’t required, please post some documentation on how to update this “index” with times you’d like to be able to seek to.
The NetStream.time seeking *BUG* leaves devs in the trenches to drum up nasty code trying to figure out what time we actually seeked to.
If you run the bit of code shown above you can see how NetStream.time is updated at some point after the seek operation has been completed.
While we’re at it, explain to me why QuickTime appears to be ABLE TO SEEK TO ANY POINT IN TIME in an h.264 file. I’m sure it boils down to some fancy explanation about Quicktime looking backward and forwards into reference frames and creating the video frame. Isn’t there a way for Flash Player to do this? Or at least duplicate the trickery that Windows Media Player uses (as described by Tinic in a comment on my blog post from 3 years ago). Give us something to avoid playhead jumpiness and the ability to seek throughout the video.
I love Flash. I love the agressive codec moves (MPEG4-AVC rules). But the devil is in the details and NetStream just hasn’t improved and that’s super frustrating.