In AS3 while using NetStream for video playback how do I seek when I use appendBytes

前端 未结 3 1543
萌比男神i
萌比男神i 2020-12-20 03:38

I am trying to use NetStream to play from a byteArray. Please see this for what I am talking about.

I am able to get this to play the video. However now I need to b

3条回答
  •  不知归路
    2020-12-20 04:13

    I got I worked:

    // onmetadata function get all timestamp and corresponding fileposition..
    
    function onMetaData(infoObject: Object): void {
    
        for (var propName: String in infoObject) {
    
            if (propName == "keyframes") {
                var kfObject: Object = infoObject[propName];
                var timeArr: Array = kfObject["times"];
                var byteArr: Array = kfObject["filepositions"];
    
                for (var i: int = 0;i < timeArr.length;i++) {
                    var tagPos: int = byteArr[i]; //Read the tag size;
                    var timestamp: Number = timeArr[i]; //read the timestamp;
                    tags.push({
                        timestamp: timestamp,
                        tagPos: tagPos
                    });
    
                }
            }
    
    // onseek click get approximate timestamp and its fileposition
    protected
    
    function seek_click(seektime: Number): void {
    
        var cTime: Number = 0;
        var pTime: Number = 0;
    
        for (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;
        }
    }​
    

提交回复
热议问题