4

各フレームのスナップショットを作成してランタイムを記録し、それをビデオ再生用に ByteArray にエンコードする機能を備えた Flex の Web アプリケーションを開発しています。

現在、ByteArray FLV を再生するために NetStream.appendBytes() を使用しています。それは機能していますが、OSMF について知り、アプリケーションに統合することを考えています。

OSMF で flv byteArray を再生することは可能ですか? それをどのように行うことができるかについての例は、まったく素晴らしいでしょう。ありがとう!

4

1 に答える 1

4

OSMF で flv バイト配列を再生できるようになりました。前もって、netStream を拡張する新しいクラスを作成し、代わりに appendbytes を使用するようにその play メソッドをオーバーライドすることで、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 が bytearray を再生するために使用する何らかのプラグインを作成する必要があるのか​​ はわかりません。もう1つのことは、私が本当に必要としているのは、必要に応じてプレーヤーにバイトを継続的に追加することです。それが、私がまだこれを使用していない理由であり、当分の間、これを理解するまでカスタムメイドの「ByteStreamプレーヤー」に固執します.

于 2011-01-14T04:03:40.457 に答える