FlashMediaLiveEncoderはコマンドラインツール(FMLECmd)を使うべし

FlashMediaLiveEncoder 、いわゆるFMLEは必要不可欠だけど不安定

Ust職人にとって、ある程度の高画質配信を行うためにはFlashMediaLiveEncoder(以下FMLE)は必須ツールです。しかし、このツールは(少なくともmacで利用している自分にとって)とても不安定です。

FMLE3.2とMac OS X 10.7.3(Lion) だとプレビュー、アウトプットの映像が見えないというびっくりするような状態ですし、終了後にしばらくたつとアプリエラーの通知が表示されたりもします。

とはいえ、高画質配信をするためにはどーーーしても、FMLEを使いたいのです。

FMLECmdはFMLEのCUI版ツール

でも、これはGUIとしてのFMLEが不安定なだけでCUIで用意されているFMLECmdを使えばかなり安定していることがわかりました。なのでmacでのFMLECmdについて紹介したいと思います。

何か特別な用意が必要に思えますが、実はmacで標準のインストールを行うと以下にFMLECmdがインストールされています。cmdという名前のとおりコマンドツールなので作業はターミナルで行います。
黒い画面がわかんねーって方はとても親切なhttp://fjord.jp/articles/548.htmlを見てみるとよいと思います。

FMLECmdで配信するための手順

さて、ターミナルを立ち上げて以下のコマンドを入力すればFMLEのCUI版が起動します

$ cd cd /Applications/Adobe/Flash\ Media\ Live\ Encoder\ 3.2/CommandLineFMLE
$ ./FLMECmd /f ~/Download/ustream.fme.xxxx.xml /d

コマンドに渡しているオプションの意味は以下のとおり。他のオプションは /h とでも入れてみてね。

  • /f ... FMLEで指定するxmlファイル。指定しない場合は直近にFMLEでセットした設定が読み込まれます。
  • /d ... xmlにエラーがあっても標準設定値を使うようにするおまじない。エラーがでた場合はこれを指定

すると以下のような画面になります。

この状態がFMLEでいう"START"ボタンを押した状態と同じです。

そして、CUIでは配信状態が刻々と表示されます。これらの情報は大きく3つのブロックに分かれています。
Current(現在のI/O)、Average(平均したI/O)、Publishing(現在の配信状況) です。
気にすべきはPublishingのBufferです。
もし、配信に遅延がほとんど無い快適な状態であればBufferは0secのままなのですが、(ネットワークが不安定になった場合など)帯域が不足したりすると、Bufferに溜まっていく様子がリアルタイムで把握できます。
こんな感じですね。

これはわざとネットワークを切断してBufferに溜まっていく様子を再現しただけですが。。

このように、Bufferがずっと溜まっているような状態が続く場合は、視聴者のためにも一旦配信を止めてでも画質を落として安定的に配信するように設定を変える必要があると思います。(というか、事前にリハーサルで確認しときましょうね)

まとめると以下のような作業です。

  1. FMLEを起動してustから取得したxmlを読み込む
  2. 映像や音声、保存ファイルの設定したxmlファイルを作成し保存。FMLEは終了しておく。
  3. FMLECmdから上記で作成したxmlファイルを指定して起動
  4. ブロードキャスターから"配信開始"をクリックして配信開始
  5. 配信中の番組画面で配信状況を確認しつつバッファリングの様子を監視

デメリットはプレビューが見れないなどの制限ですが、今のところmacだとFMLEでもプレビューが見れないから変わらないしw

もう一歩手順を簡単にしてPCの負荷を下げる

これだけでも結構満足なんですが、ブロードキャスターを立ち上げて配信開始ボタンを押すのが面倒くさいですよね。わざわざ配信開始のためだけにブロードキャス(ry

というわけで、FMLEを立ち上げてstreamの文字列の最後にあるoffair文字を削除してxmlファイルを保存しなおします。

これで、FMLEcmdからコマンドを叩くと同時に配信開始状態になります。これでブロードキャスターを立ち上げなくていいですね。もし、録画をする必要があるなら、ustにログインして番組設定からリモートブロードキャスターを起動すればこんなところに"録画"ボタンがあります。

これで手順は以下のようにすっきり

  1. FMLEを起動してustから取得したxmlを読み込む
  2. 映像や音声、保存ファイルの設定したxmlファイルを作成し保存。FMLEは終了しておく。(offair文字を削除)
  3. FMLECmdから上記で作成したxmlファイルを指定して起動し配信開始
  4. 配信中の番組画面で配信状況を確認しつつバッファリングの様子を監視

ブロードキャスターを立ち上げなくてすむ分、メモリ使用量も減りますしブラウザも安定します。FMLEをCUIで利用するというのもメモリには多少は優しいですね。

CamTwist + FMLECmd + AU Lab + LadioCast が自分の中で今のところフリーでできるかなり最強な組み合わせじゃないかなと思います。

あ、AU Labはリップシンク対策とソフトミキサーとして使い、LadioCastは音声のモニタのために使ってます。
このあたりの感想は次回にでも。
ヽ(´ー`)ノ