2013-01-21 28 views
2

我想在flex 4.5中用netStream byteArray播放一个flv视频文件。我在做什么下面是:寻求不能在Flex中工作4.5 netStream byteArray

  1. 创建NetStream和视频对象
  2. 在字节组附加一个NetStream视频
  3. 读FLV文件
  4. 使用“对appendBytes”方法
  5. 附加字节组中的NetStream播放视频

在这种情况下,播放,暂停,停止功能与视频正常工作。

但是,当我试图在视频中寻求然后它无法正常工作。

您可以按照我所通过点击链接http://pastebin.com/fZp0mKDs

谁能告诉我,我在哪里,我错了落实求做的代码。

任何代码示例或任何形式的帮助将不胜感激。

回答

1

我,下面的代码在我的情况

// onmetadata function get all timestamp and corresponding fileposition.. 
function onMetaData(informationObject:Object):void 
{ 
    for (var propertyName:String in informationObject) 
    { 
     if (propertyName == "keyframes") 
     { 
      var kfObject:Object = informationObject[propertyName]; 
      var timeArray:Array = kfObject["times"]; 
      var filePositionArray:Array = kfObject["filepositions"]; 

      for(var i:int=0;i<timeArray.length;i++) 
      { 
       var tagPosition:int = filePositionArray[i];//Read the tag size; 
       var timestamp:Number = timeArray[i];//read the timestamp; 
       tags.push({timestamp:timestamp,tagPosition:tagPosition}); 
      } 
     } 
    } 
} 

// onseek click get approximate timestamp and its fileposition 
protected function seek_click(seektime:Number):void 
{ 
    var currentTime:Number = 0; 
    var previousTime:Number = 0; 

    for (var i:int=1; i<tags.length; i++) 
    { 
     currentTime = tags[i].timestamp; 
     previousTime = tags[i-1].timestamp; 

     if(previousTime < seektime) 
     { 
      if(seektime < currentTime) 
      { 
       seekPos = tags[i-1].tagPosition; 
       stream.seek(previousTime); 
       break; 
      } 
     } 
    } 
} 


// append bytes on seekposition 
private function netStatusHandler(event:NetStatusEvent):void 
{ 
    switch (event.info.code) 
    { 
     case "NetStream.Seek.Notify" : 

     stream.appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK); 
     totalfilePositionArray.position = seekPos; 

     var bytes:filePositionArray = new filePositionArray(); 

     totalfilePositionArray.readBytes(bytes); 
     stream.appendBytes(bytes); 

     stream.resume(); 

     break; 
    } 
} 

工作了注入元数据的关键帧成FLV文件。使用一些注射器工具,铁。 FLV元数据注射器

http://www.buraks.com/flvmdi/

0

我认为在读取文件后寻找byteArray是有问题的。只要发挥你直接的NetStream,它的工作原理:

var fileName:String = "dummy-video.flv"; 
ns.play(fileName);