我正在尝试发挥一个flv视频文件在FLEX4.5与netStream byteArray。我正在做的事情如下:
在这个场景中,暂停、停止功能可以很好地处理视频。
但是当我试图在视频中寻找时,它就不起作用了。
您可以通过单击链接http://pastebin.com/fZp0mKDs来遵循我正在做的代码
有人能告诉我,我在哪里做错了实现的追求。
任何代码示例或任何类型的帮助都将不胜感激。
发布于 2013-01-23 06:13:11
我知道,下面的代码适用于我的情况
// 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;
}
}用于将MetaData关键帧注入flv file.Use的一些注入器工具,fe。FLV MetaData喷射器
http://www.buraks.com/flvmdi/
发布于 2013-01-22 07:59:13
我认为在读取文件后构建的byteArray的查找中存在一个问题。只要直接播放你的netStream,就可以了:
var fileName:String = "dummy-video.flv";
ns.play(fileName);https://stackoverflow.com/questions/14434579
复制相似问题