2012年11月23日金曜日

Flazrの配信をいじってみたいと思う。

僕にとって結構ひいきにしているプログラムがあります。
Flazrというrtmpのjava実装です。

rtmp関連の経緯は次のような感じです。
3年前くらい。
会社でストリーミングサービスをやるのに、fms wowza red5の動作検証中にred5のrtmpClientという実装をみつける。
とりあえずred5同士でストリームの中継ができることがわかったんで、apache-mina実装のこのrtmpClientにハマってました。

ところがこのrtmpClient、fms4.5(だったか?)からFlashMediaServerに接続できなくなるという問題点を発見。またストリーミングではなくファイルデータをベースにしてrtmpサーバーにメディア転送を実施するとはやおくりみたいなことが発生することもわかりちょっとへこみました。

そんなときにこのFlazrをみつけましたね。
こちらは早送りも発生せず、FlashMediaServerにも無事に接続可能。jbossのnettyベースだったので乗り換えるのに手間取ったけど、最近ではflazrのデータソースをxuggleに回す動作も問題なくできたし、と、なかなかの動作を見せてくれてます。

で、いままではFlazrをベースにrtmpサーバーからデータをひっぱってきて、コンバートかけてiOS用のストリーミングに変換したり、Flvに落とし込んだりしていたわけですが今回ちょっとrtmpサーバーに映像をpushすることに挑戦したいとおもっています。

Flazr
Flazrは2009年の年末に開発がとまったみたいです。
RC2のアーカイブデータが公開されていますが、僕はソースコードからコンパイルしなおしたデータを利用しています。(ソースコードも同梱されてたと思います。)
理由は、なぜかアーカイブのコンパイル済みデータが古くてちょっとバグがあるためです。

基本的には次のようなコマンドで利用します。
flvにダウンロードするとき
$ ./client.sh -host (サーバー) -app (アプリ名) (ストリーム名) (保存先ファイル名)
flvを放送するとき
$ ./client.sh -host (サーバー) -app (アプリ名) -live (ストリーム名) (配信元のflvファイル)
-liveの記述をわすれると配信元のデータが消えるのでその部分要注意です。

で、ファイルをベースにしたrtmpの配信はできるわけだが、今回やってみたいのはパイプで接続した標準入力をベースにrtmpの配信をするという件。
(ぶっちゃけるとrtmpdumpでも十分できるわけだが・・・)


0 件のコメント:

コメントを投稿