寻求在 flex 4.5 netStream byteArray 中不起作用 [英] seeking not working in flex 4.5 netStream byteArray
问题描述
我正在尝试使用 netStream byteArray 在 flex 4.5 中播放 flv 视频文件.我正在做的事情如下:
I am trying to play a flv video file in flex 4.5 with netStream byteArray. What I am doing is below:
- 创建 netStream 和视频对象
- 附加带有视频的 netStream
- 在 byteArray 中读取 flv 文件
- 使用appendBytes"方法在 netStream 中附加 byteArray
- 播放视频
在这种情况下,播放、暂停、停止功能可以很好地处理视频.
In this scenario Play, Pause, Stop functionalities are working fine with video.
但是当我尝试在视频中寻找时,它不起作用.
But when I am trying to seeking in video then it is not working.
您可以通过点击链接http://pastebin.com/fZp0mKDs
谁能告诉我,我在实现搜索时哪里出错了.
Can anybody tell me, where am I am going wrong to implement seeking.
任何代码示例或任何类型的帮助将不胜感激.
Any code sample or any kind of help would be appreciated.
推荐答案
我明白了,下面的代码适用于我的情况
I got, the code below worked in my case
// 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 文件中.使用一些注入器工具,fe.FLV 元数据注入器
For inject MetaData keyframes into flv file.Use some injector tool, fe. FLV MetaData Injector
这篇关于寻求在 flex 4.5 netStream byteArray 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!