actionscript 3 - In AS3 while using NetStream for video playback how do I seek when I use appendBytes -
i trying use netstream play bytearray. please see this talking about.
i able play video. need able see particular second. not able this. if go through bytearray know can metadata , keyframes required , offset ( in bytes) each keyframe at. there no way seek particular offset. supports seek in seconds , doesn't seem work on bytearray.
how go ?
i got worked:
// onmetadata function timestamp , corresponding fileposition.. function onmetadata(infoobject: object): void { (var propname: string in infoobject) { if (propname == "keyframes") { var kfobject: object = infoobject[propname]; var timearr: array = kfobject["times"]; var bytearr: array = kfobject["filepositions"]; (var i: int = 0;i < timearr.length;i++) { var tagpos: int = bytearr[i]; //read tag size; var timestamp: number = timearr[i]; //read timestamp; tags.push({ timestamp: timestamp, tagpos: tagpos }); } } // onseek click approximate timestamp , fileposition protected function seek_click(seektime: number): void { var ctime: number = 0; var ptime: number = 0; (var i: int = 1;i < tags.length;i++) { ctime = tags[i].timestamp; ptime = tags[i - 1].timestamp; if (ptime < seektime) { if (seektime < ctime) { seekpos = tags[i - 1].tagpos; stream.seek(ptime); break; } } } } /// append bytes on seekposition private function netstatushandler(event: netstatusevent): void { switch (event.info.code) { case "netstream.seek.notify": stream.appendbytesaction(netstreamappendbytesaction.reset_seek); totalbytearray.position = seekpos; var bytes: bytearray = new bytearray(); totalbytearray.readbytes(bytes); stream.appendbytes(bytes); stream.resume(); break; } }
Comments
Post a Comment