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は音声のモニタのために使ってます。
このあたりの感想は次回にでも。
ヽ(´ー`)ノ

勉強会をUSTREAM配信するときに注意すべき7つのこと

USTREAMで勉強会を配信するということも、Webカムが1台あればできる気軽さもありとても一般的になってきたと思います。
でも、いざ放送をするとなると注意しなければならないことが結構あります。

これまでの経験で注意しなければならなかったことをまとめておきたいと思います。

事前にネットに中継されていることを周知しておくこと

いざ勉強会開始時に「機材あるからやろう」ぐらいのノリでやってしまうと、発表者の資料に中継されてはまずい部分があったりすると問題になることもあります。

勉強会を企画した段階でustするかどうかは決めておくことと発表者に同意を得ることが大事です。
発表者の中にはustがNG、顔出しNGの方もいるかもしれませんので、その場合は特定のセッションは放送を停止するなど考慮が必要です。

また、勉強会開始時に参加者にもustを行なっていることを説明しておきましょう。
質問する内容もustに流れますし、その内容にオフレコなことがあるとまずいですよね。
さらに、カメラの前を通ると写ってしまうことも説明しておきましょう。

ustはtwitterと同じで誰が見ているかわからないということを意識すること

ustは誰が見ているかわかりません。人数しかわかりません。
プライベート設定にすればパスワードで制限を掛けることができますが、その程度の制限しか掛けることができません。
つまり"この場限りで"というような軽い気持ちで誰かを批判するような発言をしたりしたことが後で問題になることがあるかもしれません。
さらに、ustだと気軽に録画することができ、いつでも動画を見ることができるようになります。
こうなると"この場限りで"の発言ではなくなってしまいます。

プレゼンテーションの文字サイズは大きめで作成してもらうこと

プレゼンテーションの文字の大きさは自分が思っている以上に大きめにしておきましょう。
とくに、コードを見せる画面では文字が小さくなりがちなので意識したほうがいいです。
コードの説明はコードでない部分の説明に比べてコードが見えないと全くもって理解できないことが多いと思います。
これは、ustに限らず会場のプロジェクターが小さかった場合にも有効ですね。

音声は本番中のみ流す。開場時、休憩時はOFFにすること

講演中は発表者の声がメインで放送されるので問題ないのですが、休憩中も放送した状態で放置してしまうとマイク近くでの会話がそのまま放送にのってしまいます。
「おー久しぶりー、XXちゃん元気?」とか「名刺交換させてください。〇〇のXXです」などと個人情報がダダ漏れの場合もあります。
問題にならないためにも音声は本番中のみ流しましょう。場合によってはカメラもOFFにする必要もあるかもしれません。両方をOFFにした場合は放送が終わってしまったかのように勘違いされる可能性があるので、camtwistなどを使って"現在休憩中"などの文字を画面に表示すると親切です。

いつでも放送を停止できるようにスタンバイしておくこと

放送事故対策です。過去に何度か経験ありますw

映像よりも音声が大事。ステレオよりもモノラル

勉強会のようなustで一番大事なのは音声です。映像が汚くて資料が見えなくても、別途資料を公開してもらいそれを見ながらやればカバーできたりしますが、音声が聞き取れないのはカバーしようがありません。

音声は小さいよりは大きいほうがマシです。インプットレベルは大きめを意識するといい感じになります。
また、ステレオよりモノラルのほうが会話は聞き取りやすい場合が多いです。

会場にネットワークが用意されていても自前のwimaxを用意しておくこと

技術系の勉強会だと多くの方がのノートパソコンを持参してきます。そして、会場で提供されているネットワークを利用されたりします。結果として帯域が使い尽くされ肝心のustの放送に影響がでることも多いです。
会場に無線LANが用意されていても、自前のwimaxを利用したほうが放送が安定することも多いです。
事前の打ち合わせで"会場でネットワーク利用できますか?”と質問するより"会場でwimaxつながりますか?"のほうが自分にとっては重要なポイントだと思っています。

アジャイルサムライ他流試合の動画

2011年9月18日にオラクル青山センターにて アジャイルサムライ他流試合が開催されました。
アジャイルサムライ他流試合 : ATND


かなり熱いイベントでした。
詳しい内容は参加された熱心な弟子たちのレポートを参照してみてください。
特に@shinyaa31さんのレポートが詳しいので復習するには必読です。
アジャイルサムライ読書会(他流試合)に参加してきた【前編】 #agilesamurai #他流試合 - Diary of absj31


あと、togetterでも当日の雰囲気が伝わります。
http://togetter.com/li/189708


私自身は前の方でUst画面とにらめっこしていてばかりだったのですが、以下のアーカイブはいつでも見れますので、当日参加できなかった方や再度復習されたい方は是非利用してください。

とはいえ、全てをアーカイブできていたわけではないのでその点申し訳ないです _(_ _)_

読者の声 LT大会


マスターセンセイへの質問


ちなみに

今回の配信構成はシンプルです。

  • webcam x 1台 (主に登壇者撮影用、USB接続、音声も基本このwebcamの内蔵マイクを使用)
  • DVカメラ x 1台 (主にプロジェクタ撮影用、Firewire経由で映像入力、音声は別途オーディオIF経由で入力)
  • CamTwistで映像合成やPinP
  • LadioCastでwebcamとDVカメラの音声をミキシングし、最終アウトプットのレベル調整
  • UstreamへはFMEを使って配信

音声はもともと会場の回線を引っ張って来れないとのことだったのでオフマイクのみです。
なので、あえて音が割れてもしょうがないという前提で入力レベルは高めにしました。
臨場感はありますが、登壇者用にワイヤレスがあったらもっとクリアになったかなーとか、コンプがあればもうちょっとゲイン稼げたかなーとか色々思いながら配信してました。

何よりもオラクル青山センターの回線が安定していたので一度も落ちなかったのが何より心強かったです。
そして、いつもながら@gilbiteさんには協力してもらって感謝っす。

ダダ漏れコーディングのススメ

最近USTREAMの技術者的な楽しみ方を模索してたりするのですが、コーディングの様子をダダ漏れしてみたところ意外な発見があり楽しかったので是非皆さんに勧めたいと思います。

ダダ漏れコーディングとは?

プログラムを書いている様子をUSTREAMを通して配信するという、これまでにされてきた方もいますし決して新しいというものではありませんよね。

自分がやったUSTダダ漏れの内容を超短く編集したのを晒しておきます。

(注) 一部録画を編集しています。(吹き出し、右上のtwitter発言のPIP)
番組URL:http://www.ustream.tv/channel/brtriver-ch

なぜおススメするのか?

USTREAMで配信するのですから見てくれる方もいます。なので、最初は勉強会の発表のようなイメージでいたのですが、そんな固く考える必要はなく、その人たちに「見せる」だけではなく、作業内容に「突っ込んでもらう」という流れができてきました。これは動画配信しチャットを絡めて作業できるからこその醍醐味です。*1

動画や番組という形でリアルタイムで配信することにより反応をダイレクトに受けることができることがブログに書いて公開することと大きく異なると思います。そして、配信に慣れてくるとブログに清書する時間も必要ないのでより手軽に情報を発信できるようになるでしょう。

必要なのは自分の汚いコードや画面を晒すその勇気だけです。

ソーシャル・デバッギング

実際、ダダ漏れ中にtwigをtiwgとtypoしていることにまったく気づかずにエラーで悩み続けていたところを@hidenorigotoさんに

と突っ込んでもらえて救われたのですが*2、まるでペアプロをリモートでしているような感じでした。そしてこの様子をみていた@fivestrさんが「ソーシャル・デバッギング」と命名してくれました。

さらには、仕様が変わっていて動かなくなっていることを指摘してもらえたり、そして、その指摘された内容は見ている皆で共有できるという展開でした。これってちょとしたワークショップ並に凄いですよね?

というわけで、ソーシャルデバッギングのために意識したほうが良いと思われることをまとめておきます。

配信するディスプレイは別画面で

物理的に2画面用意し、配信用の画面とローカルの画面に分けた方がよいです。これは配信用の画面の解像度を下げて文字を見やすくするということと、さらしてはまずい作業や画面をローカル側の画面で行うことで安全性を担保しています。

文字はできる限り大きめで

さきほどの動画みてもらえればわかりますが、通常作業する文字とはフォントの大きさが全く違います。ただし、見てもらうためにはしょうがありません。狭い画面であたふたしているところも晒しましょう。

無言・無音は避ける

コーディングの配信だからといって音無だときついです。最低でもBGMは流したほうがいいです*3。音が流れている間は配信中というのがわかります。そして、できる限りマイクに何かぼやきながらコーディングしましょう。画面で何をしているかを声に出しながら作業するのが一番です。より視聴者から突っ込まれやすくなります。また、チャットなどで何か情報をもらった場合は、その内容を発言することで視聴者全員で情報を共有できますし。

たとえば「ついまる」を使ってみる

視聴者からのツッコミにはできるだけ反応しましょう。作業しながらというのは大変ですが。。
どうしてもタイムラインを見るのが難しい場合は、タイムラインを読み上げてくれるガジェット「ついまる」なんかを利用してみてはどうでしょうか?(動画の、[その1]のツッコミはついまるがタイムラインを読み上げて気づいています。)


私自身も手探りでやってみているので何がベストなのかはわかりません。もし、「こんなことやったほうがいいよ」ということがありましたらご指摘ください。

*1:プログラミングだけでなく、気になる話題をネットサーフィンし調査しながら、その内容をしゃべるだけでも良いと思います。

*2:指摘されなかったら後20分ぐらい悩んでいたかもしれません。。

*3:もちろん、著作権には気をつけてね

Web関連のUST番組リスト

もはやUSTREAMは一般的なものになりました。奇麗に配信するのにはコツや知識がいりますがとりあえず配信する敷居そのもは低くなりました。そして、バラエティーあふれる番組が配信されていて最近ではWebに関する番組も多く存在するようになりました。

というわけで、USTREAMで視聴、参加できるWeb関連の番組をまとめてみます。
多分、漏れてるものがあるはずなのでコメントか@brtriver宛につぶやいてもらえれば追加しますです。

また、同じテーマではなせる人が周りにいるならUstreamで配信してみると面白いと思いますよ!

(順不動)

週刊Concreate5

USTトーク番組「週刊concrete5」

  • 毎週木曜日 夜22:00〜(1時間ほど)
  • "「concrete5 をもっと身近に」をコンセプトに、concrete5以外のサイト制作に関するいろいろなトピックについても話し合っていくつもりです。"
  • OSSという文化を広めたいというコンセプトもあり、話題は多種多様
  • もうすでに27回も配信されている! (2011/4/27現在)
  • 番組タイトルもかっこいい!

vanitalk (ばにとーく)

http://vanitalk.net/

  • 毎週金曜日 23:00〜 (オフトークあり)
  • バニレートが、誰かとたのしくおしゃべりする、ばにとーく。
  • 毎週ゲストを招いてWeb系のクリエイターの話題を中心に盛り上がってます。

週刊CMS

主婦が知るべき借金返済の極意

  • WordPressXOOPS Cube、ImpressCMS、MODXconcrete5、Joruri、TYPO3などの情報
  • 毎週土曜日11時から1時間放送
  • "CMS に関するニュースや比較などの情報発信を行い、それぞれの認知度や理解を深める"
  • "毎回各 CMS グループが持ち回りで会場提供司会を行う"
  • "3ヶ月に一度、マイクロソフトのカンファレンスルームにて公開録画イベントを開催"

Webなんたらかんたら

http://www.webnantara.com/

  • "Webな、なんたらかんたらを二人(@shin1x1+@msng)で話すネットラジオです。"
  • 放送時期:不定
  • PHPネタだけに限らず。
  • ほんまおもろい。

生放送しながらWebサービスを作る

生放送しながらWebサービスを作る

  • 実際にWebサービスを開発している様子を生Ust
  • "@komagata(プログラマー)と@machida(デザイナー)がフィヨルドという2人の会社でHelp me, Hackers!というWebサービスを作っていきます"
  • 毎日(平日) 18:30〜19:00 (※ 最近は放送されていない模様)

Symfonyしゃべりば

Symfonyしゃべりば(仮) on Ustream

CakeRadioGaGa

CakeRadioGaGa

USTREAMを使ってSkypeの音声チャットでラジオ (Mac環境版)

タイトルそのままですが、これってちゃんとやろうとすると結構大変なんですよね。
@tsukimiyaさんのアドバイスにもあったんですが、普通に何もかんがえずにやると音声がループしたりします。
せっかくなので私がやった方法をまとめておきます。

ポイント

Skypeで利用する音声回線と、USTREAMで利用する音声回線を別居させること。これだけです。これが混在しているとループします。別居させるためには何かしらのミキサーが必要になるので、このミキサーの使い方を理解しておく必要があります。(今回使うのはLadioCastというソフトミキサーです)

最低限必要なもの(ハード)

  • ヘッドフォン ... 自分のしゃべりにスカイプの音声が入ってしまわないようにするために用意しましょ。
  • マイク ... Macbook だと内蔵マイクがあるのでそれでもOKですね。

最低限必要なもの(ソフト)

  • Skype (これが無いと独り言ラジオになりますので)
  • Soundflower (仮想オーディオデバイスです。音声の出力先を変更できます)
  • LadioCast (ミキサー。Skypeの出力音声と自分の声をミックスしてUSTREAMに流します)

接続図

これらを接続した結果は次のようになります。

ポイントは

  • Skypeの音声出力はSoundflowerの2chを指定する。
  • ミキサーからの出力はSoundflowerの16chを指定する。
  • USTREAMの音声入力はSoundflowerの16chを指定する。

順を追ってキャプチャで設定している内容を見てみると、
Skypeは設定画面で以下のように設定

呼び出し音などもUSTに流したい場合は「呼び出し音」のタブも同じように変更すればOK


LadioCastでは以下のように設定

左側の3つが入力、右の3つが出力の制御です。左上がSkypeの音声、左中が自分の声です。この2つをミックスした結果が右上です。Skypeの出力には自分の声は入っていないのでこのようにしてミックスする必要があるのです。

USTREAMの配信画面では以下のように設定

LadioCastで出力先に指定したSoundflower16chを指定すればOK

なんだかよくわからねーって声も聞こえてきそうですが、これを参考にトライ&エラーするとそれとなく解るようになると思います。

あと、ヘッドフォンでモニタしてますが、soundflower16chに出力を指定しただけではヘッドフォンをさしても音はきこえません。仮想デバイス上を音がながれているだけなので。

そこで、アプリケーションのSoundflowerディレクトリにあるSoundflowerbedを起動させ、以下のように16chの出力を build-in outputに指定します。これでヘッドフォンで16chの出力音声をモニタできるようになります。

16chを直接モニタリングに使用しているのは最終的に出力される16chを聞くことで自分の声とSkypeの音量のバランスを聞いて確認できるからです。

自分の声が聞こえるのがしゃべりにくいということもあるかと思いますので、その場合は2ch側をモニタリングすると良いんじゃないんでしょうか。


こだわり配信

実際は上記構成にさらに手を入れた構成で配信してます。
というわけで、これの応用編が「こだわり配信」というわけで簡単に説明をば。

どこがこだわりかというと、
・BGMも流したい。
・ついまるの音声もUSTに流したい。
・自分の声は外部マイクにしてよりクリアな音声に
・ラジオといいつつ、映像がないのは寂しいのでスクリーンキャストを流したい
・より高品質で配信できるようにしたいのでFlashMediaLiveEncoderを使いたい

それほど欲張りというものでもないですけどね。。

意識したことは、ソフトウェアでの制御はできるだけやらない。ハードウェアで制御できるものはハードウェアで制御する。
これはシステムが安定するからということです。たとえばBGMをiTunesから流すこともできますが外部ミキサーがあって音楽プレイヤーがあるならそこから流したほうがメモリも使用せずに安定した配信が可能です。とかいいながら ついまる がWindowsにしか対応していないのでVMwareをわざわざ立ち上げる必要があるのですが。。。

という流れで最終的には以下のような構成になりました。

どこまで参考になるかわからないですがお役にたてればこれ幸い。

配信で映像が遅延する場合の対策

USTREAMでは映像が遅延するときがあります。
一番良い対策方法は映像のサイズはフレームレートを下げて遅延が起こらないようにすることですが、
音声をわざと遅らせて違和感がないようにする方法もあるかと思います。

というわけで、音声を遅らせる方法ですが、音響にある程度詳しい人ならすぐわかると思います。
シングルディレイを掛けてあげばいいんじゃね?ってことですね。
MacでGarageBandeを使って音声を調整している場合はGarageBandでエフェクト設定すればOKです。

なんのことかよくわからなければ以下のようなエフェクト設定を音声などの入力チャンネルに行います。
そうすると、いっこく堂のように音声が遅れて流れます。

エコータイムで「どれだけ遅らせるか」を設定できます。
細かな設定とまではいきませんけどね。。

実際にUstreamで録画したものをYoutubeにあげてみました。
45秒まではGarageBandのディレイ有り
1分21秒あたりまではディレイ無し
そして、最後まではまたディレイ有りです。
字幕を入れているのでディレイが効いているかどうかは判断できると思いますが。

楽器演奏などでなければ気にならない程度といえばそれまでですけどね。
素人ならではの試行錯誤でした。