4

我正在用 flex 开发一个 web 应用程序,它具有通过对每个帧进行快照然后将其编码为 ByteArray 以进行视频播放来记录运行时的功能。

我目前正在使用 NetStream.appendBytes() 播放 ByteArray FLV。它正在工作,但我刚刚发现了 OSMF 并考虑将其集成到我的应用程序中。

可以在 OSMF 中播放 flv byteArray 吗?一个关于如何完成的例子将是非常棒的。谢谢!

4

1 回答 1

4

我现在可以在 OSMF 中播放 flv 字节数组。之前,我已经能够通过创建一个扩展 netStream 的新类并覆盖其播放方法以使用 appendbytes 来播放 byteArray。所以我所做的就是让 OSMF 使用它。我这样做是为了创建这些类: 1. ByteStreamElement - 媒体元素 2. ByteStreamLoader - 扩展 LoaderBase 3. ByteStreamLoadTrait - 扩展 LoadTrait

覆盖 netstrema 搜索/播放方法:

//manually dispatch seek event since we override seek()
dispatchEvent(new NetStatusEvent(NetStatusEvent.NET_STATUS,false,false, {code:"NetStream.Play.Seek", level:"status"})); 

//look for byte position based on _seekTime value
flvStream = _sfw.getFlvStream(false);  
_seekTime = parameters[1] * 1000; //netstream time in milliseconds
_flvParser.parse(flvStream, false, flvTagSeeker);
flvStream.position = _flvParserProcessed;

//append flvtag from the new byte position to end of flv byteArray 
var tmp:ByteArray = new ByteArray();
flvStream.readBytes(tmp, 0, flvStream.bytesAvailable);
_flvParserProcessed = 0;
this.appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
appendBytes(tmp)  

并像这样使用它:

 mediaPlayerSprite = new MediaPlayerSprite();
 addChild(mediaPlayerSprite);
 mediaPlayerSprite.media = new  ByteStreamElement();

我真的不确定这是否是最好的方法。不确定我是否最好创建新类,或者我应该为 OSMF 编写某种插件来播放字节数组。另一件事是,我真正需要的是在播放器中持续追加字节以备不时之需。这就是为什么我仍然没有使用它,同时我会坚持使用我定制的“ByteStream 播放器”,直到我弄清楚这一点。

于 2011-01-14T04:03:40.457 回答