2012年3月4日日曜日

netStream.appendBytesの話

さて、githubにhttpTakStreamingを公開したわけですが、ここでつかわれている、netStream.appendBytesについて、ちょっと紹介しておきたいと思います。

ActionScriptのnetStreamにはFlashPlayer10.1から(だったと思いますが)、appendBytesというメソッドが追加されています。
どういう動作かというと、netConnectionのサーバー指定しないものをベースにした、netStreamでは、追記されたFLVバイトデータを再生することができるというものです。

これをつかえばPC内にあるFLVデータを再生するプレーヤーとかつくることができます。
http://help.adobe.com/ja_JP/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#appendBytes()
さて、アドベの説明によると[バイトパーサーは、ヘッダー付きの FLV ファイルを認識します。ヘッダーが解析された後、appendBytes() は、今後のすべての呼び出しが同じ実際のファイルまたは仮想ファイルの連続であると予期します。appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN) が呼び出さるまでは、別のヘッダーは予期されません。]とあります。

要するに追記されたデータはすべて同じファイルの続きであると解釈して動作しますよ。ということです。

いいかえると、後から追記するデータでも、同じファイルとして成立するならば、再生データとして受け入れるということです。
もちろんデータの供給がおいつかなくなるとNetStream.Buffer.Emptyとかがでてとまっちゃいますが、そうでなければ大丈夫です。

というわけで、HttpTakStreamingでは、FLVのファイルとして成立させるために、Fthファイル(FlvTakHeaderファイル)をまず読み込ませFLVデータの土台を送りつけたあとに、Ftmファイル(FlvTakMediaファイル)を動画の本体として連続でどんどん読み込ませるという方法で、ライブ放送を成立させています。

0 件のコメント:

コメントを投稿