UstreamでFlash Media Encoderを使って高画質配信するためのまとめ

昔々、このサイトがゲーム系サイトだった(気持ち的には今も!)頃に、少しUstreamを使ってゲーム配信していたことがあったのです。その頃は画質散々、フレームレート散々で到底実用にならず、次第に縁も遠くなってしまいました。そんなこんなで、暫くお休みしていた間に、何やら外部エンコーダーを使って高画質配信が出来るようになっていたので、手法や設定などのメモをまとめてみました。ゲームだけに限らず、デスクトップ配信や勉強会配信にも適用できると思いますので参考にどうぞ。

とりあえず実際の配信結果を一つ。私はエンコード関係を確かめるときはGeometry Warsを使っています。エフェクトが激しくてエンコーダー泣かせなので。綺麗な画質、とは言えないものの十分見れる画質(そうか?)とフレームレートが確保出来ています。エンコーダーに優しいソースならもっと綺麗になります。たとえばエンコーダー泣かせの対極である静止画主体のもの、ちょうど3Dギャルゲーの体験版が配信された日だったので、それも撮ってみました-> TimeLeap。1:30ぐらいからモデルが出てきますが、結構綺麗に撮れています。動きが入るとすぐに乱れてしまいますが全体的には許容範囲に収まっています。

あ、そうそう、そんなわけで配信再開しています。Blogトップの上のほうに張り付けてあるので、気が向いたら見てくれると嬉しいです。また、配信開始時には原則Twitterのほうでも告知していますのでそちらからでも。流行に100歩遅れて乗って、実況音声も入れることにしました。あまり話せる人間じゃないのでたまにボソッと呟く程度ですが。そもそも私の声が、ちょっとアレだし。聞いててイライラする質の声だと思います。

Flash Media Encoderの設定

まずはエンコーダー。AdobeのサイトからFlash Media Encoderをダウンロードします。2009年6月現在の最新版はFlash Media Live Encoder 3。ダウンロードにはAdobeへの登録が必要なので適当に入力しておきます。それと、製品サイト/本体ともに日本語版はありません。が、別に設定するようなところも大してないので英語でも何ら問題はないでしょう。

次にUstreamの設定画面(Your Shows->Advanced)から、Flash Media Encoder XML Fileをダウンロードします。これにUstream配信用の設定が全て記載されているので、FMEのメニューFile->Open Fileでダウンロードした設定ファイル読み込む。すると、画面右側に配信用のURL等が反映されます。これだけでもう配信可能。「FME側のStartボタンを押してからUstream側で配信コンソールを開いて」配信開始するだけ。FMEを利用している場合は、配信コンソールでは何の設定もする必要はない(というか出来ない)ので、Record StartやStartを押すだけです。配信コンソールを先に開いていたり、途中でコネクションが切れたりした場合は、コネクションが再度繋がるとUstreamコンソールのInfoタブの横にReconnectタブが現れるので、そこでYes, switch to the FME Streamを選択すればFMEによる配信になります。

FME側のStartを押すとエンコードが開始されます。エンコードは開始されますが、Ustreamでの配信はUstream側のコンソールでSTART BROADCASTを押さない限りは始まらないので、遠慮なくローカルのテストのためにStart押していきましょう。で、エンコード開始するとEncoding Logタブに移りますが、このタブの右側、Staticsが非常に重要。AverageのOutput、Dropsとfpsに注目して、エンコード設定を煮詰めていくことになります。Dropsはドロップ数でフレームが欠けた数を示す。フレームが欠けたときはカクカクした動画が配信されている、ということになります。fpsのほうは平均FPSで、ドロップ数の影響で全体的にどれだけフレームレートが低下したかを示すことになります。

結果的にほとんどデフォルトなのですが、エンコード設定。。FormatはH.264ではなくVP6。これは、Ustreamとの相性が現在H.264だと悪いのと、低ビットレートではVP6の画質も悪くないので。フレームレートは30fps。低ビットレートで60fpsは画質劣化が酷いので、ここは普通に30fpsが良いかと思います。600kbpsぐらい映像に回せるなら60fpsも悪くないとは思いますが……。

映像サイズは480×360。映像サイズは自由に選べるので640×480だろうが320×240だろうが好きにしていいのですが、ここはUstreamの表示パネルのサイズである480に合わせるのが無難。ニコニコに直接綺麗に転載したい、とか思うならニコニコサイズ(512×384)も面白そう。Ustreamは表示サイズ16:9も選べるので、映像ソースがワイドなら480:270にする、のはお薦めしません。というのも右上にUstreamの透かしロゴ、左下に広告のオンオフボタンが表示されるので、4:3にすればそれらが映像ソースに被るのを避けることが出来ます。

ビットレートは映像400、音声96の合計500。ビットレートの上限はとても悩ましい。Ustream的には制限はないので、配信者の回線、というよりも受信者の回線の性能を考えて私はこのぐらいに抑えています。もう少し欲張ってもいいかもしれません。音声はサンプリングレートを22050Hzにすればビットレート80以下も選べるので、64あたりにして、その分を映像に回すというのも良いですね。

VP6のエンコーダー設定はQuality以外は弄る必要がなく、そしてQualityなのですが、これは現状Good Quality以下から選ぶことになりそう。画質優先なら当然Best Qualityだろ、と言いたいところなのですがLower Framerateと書かれているとおり、本当にフレームレートが低下します。これは録画して、上述のStaticsでチェックすれば簡単に分かります。とにかくドロップ数が酷く、私の環境(Core i7 920)でGeometry Warsを撮ると平均15fpsになってしまい、画質どころの話じゃありませんでした。平均15fpsといっても連続して15fpsではなく、始終バラバラにフレームが欠けてカクカクになった結果の15fpsだから始末が悪い。BestとGoodの間、Greatはどうかというと、ドロップ数はかなり少なく平均28fpsぐらいで、まあまあ良好と言えるのですが、「少しとはいえカクカクする」 vs 「そこそこの画質向上」を秤にかけた結果、私はフレームレートの安定のほうを選びました。この辺は、好みとマシンスペックと実際に配信する動画の性質によって変わるので、何度かオプション変えてエンコードして、Staticsを確認してみてください。マシン性能によってはAvg QualityやLower Qualityにすべきかもしれません。

SCFH DSF

ここからは取り込みもとの映像ソースの話。デスクトップ配信/ゲーム動画配信をするなら、ManyCamだの色々ツールはありますが、現在はSCFH DSF一択になります。高機能で軽くて設定が楽なので、他のを選ぶ意味がありません。インストール方法は、解凍したSCFH DSFをこれ以降動かすことのないフォルダに配置してinstall.batを実行。あとは、Flash Media Encoder(以下FME)を起動した後にSCFH DSFを起動し、FMEのプロセスを選択してOK。これでFME側のInputプレビューにSCFH DSFの画面が表示されているはずです。

設定は、まずメニューからLanguage->Externalを選んで日本語にする。そして、Drag Hereでキャプチャソフトのプレビュー画面(私はキャプボにIntensity、ソフトにKusunokiTV HDを使っています)を選ぶ。縮小方法は基本はSoftware(Bilinear)。CPUがよほど貧弱でなければ、これを選ぶべき。ただし、カクカクしてまで綺麗な縮小画質にこだわるのは無意味なので(カクカクのほうが、よほど動画としての画質が低い)、右下のパフォーマンスのfps表示を見て、酷く低いならもっと軽量の方法を選ぶと良いでしょう。オプションはお好みで。オーバーサンプリングはパフォーマンスのfpsに余裕がありそうなら、チェック入れとくと素敵な気分になれる。

SCFH DSFはレイアウト機能によって、多数の取り込みソースを自由に合成することが出来ます。Xbox360の映像ソースは16:9なので、上下に領域が余る。この余った上下の領域には、黒帯+メッセージを表示することにします。画面解像度は480×360で、映像は480×270。つまり480×45の領域が使えることになる。今回は付箋紙21(2000)を用いて黒帯+メッセージ表示域を作成してみました。付箋紙21SEではないのは、直接編集機能を利用するためです。

背景色を黒(別にピンクでも画像でも何でも構いませんが)、付箋の縁は「なし」、それとオプションでダブルクリック時の挙動を「直接編集」に変えておくと編集が楽になります(なお、直接編集時に編集から抜けるショートカットはCtrl+F4)。最後に480×45へのサイズ調整ですが、手作業で合わせるのは不可能なので、ツールを使います。ここはAutoHotkey万能説に則り、こんなスクリプトを使うことにします(#IfWinActive系のはこれより後続の設定の全てに影響を与えるので、スクリプト設定ファイルの後方に追加しましょう)。

#IfWinActive, ahk_class THUSENSHI
F1::WinMove, A,,,,480,45

付箋紙に対してのみ、F1キーを480×45にリサイズするショートカットに設定、という意味になります。というわけでF1を押してリサイズ後は、右クリック->サイズ・位置固定にチェックを入れておくとサイズが変わらないことが保証されて安心度アップ。AutoHotKeyの使い方に関しては過去の記事、AutoHotKeyによるマウス/キーボード徹底カスタマイズで詳しく紹介しています。スクリプトに関してはAutoHotKeyでウィンドウのタイル配置でも少し書いていますので良ければどうぞ。スクリプト書こう!とか気合い入れてキーリマップしよう!とか考えると若干面倒くさいのですが、上のスクリプトを適用させるぐらいならAutoHotKeyをダウンロードしてAutoHotkey.iniに↑のコードをコピペするだけなので、簡単にすぐできます。

付箋紙ができあがったら、あとは、FCSH側でウィンドウ追加してDragHereして上部と下部に設置すれば出来あがり。

音声調整

音量が大きすぎて割れたり、逆に小さすぎるのは困りものなのですが、FMEの音量モニタリングはイマイチ分かりにくい。音量は事前に別のツールである程度調整すると良いでしょう。ここはSoundEngine Freeを使います。大きな効果音が鳴るシーンで波形が割れないように、実況するならばマイク音声も込みでBGMと声のバランスを合わせるためにも、何度も何度も録音しては調整して録音しては調整して、を繰り返すわけですが、録音しての繰り返しは面倒くさい。WaveSpectraを使えばリアルタイムに観測できますが、リアルタイム過ぎて逆にチェックしづらいので、私は何度も録音しての繰り返しになりました。

波形見て、0dbを頻繁に超えているようなら割れまくりということなので、音量下げるべし。それでも、ゲームによって音量違ったりするし、マイクが絡むと面倒くさいしで、一回設定決めれば二度と弄らないでいい、というようなものにはならないので難しいですねえ。

実況音声

利用しているサウンドカードはマイク入力がないので、マザーボードのオンボードMic入力を使おうと思ったのですが、いざ試してみるとノイズが酷過ぎるしマイクブーストは調整がピーキー過ぎるしで、使いものにならなかった。オンボードで苦労するぐらいなら、ササッと諦めて外部アンプや外部ミキサー買う方がきっと幸せになれます。

マイクは、私はヘッドセットが苦手なのでスタンド型のものを。サウンドカードのライン入力にマイク音声を入れるためミキサー、ついでに、もうどうにでもなれー、とばかりにマイクアンプもセットで購入。こうして、オーディオテクニカ配信三種の神器が完成してしまった。馬鹿にならない出費に……。とはいえ、オンボードのマイク入力品質、というかラインインも含めてアナログ系の品質はかなり酷いので、ササッと諦めた方が良いです、と思いたい。マイクアンプもミキサーも、あると物凄く楽になります。必死にオンボードのマイクブーストの設定と格闘、とかアホらしいぐらいにクリアに録れるし音量調整も簡単。というわけでカウトイイトオモウヨ。

実際の環境

こんな感じで配信しています。マイクが少し見づらいかな、一応正面に立ててあります。モニタは真ん中にゲーム画面、右にエンコード関連、左に配信コンソール(チャットや配信数監視)とブラウザ(ついったー見る)。PCモニタをゲーム画面代わりに使うと、こういうところが楽でイイ。そして、ディスプレイ枚数は正義。グラフィックボードの追加が必要なトリプルはともかく、今時のPCなら(たとえノートPCであっても)デュアルは欲しいねえ。なお、この環境は30インチWQXGA(2560×1600)と23インチQWXGA(2048×1152)が二枚です。

モニタ安いので、接続端子が空いているならばデュアルにすると、とても幸せになれます。どうせサブだからと17や19インチ買うよりも、思い切ってサブも横1920のものを選ぶと、横が長いので色々配置出来て良い。サブなので24とか大き目のものは辛いので(単純に、あまり横に伸び過ぎると目の移動量が多すぎて疲れる。理想は勿論三枚同じディスプレイにすることですがメインは大きいモニタ、サブは小さめに、というのも私はアリだと思っています。三枚全てが30インチとか現実的に無理だし)21インチぐらいのがいいんじゃないかなー、最近だとフルHDサイズとして結構出てますよね。まあ、勿論、メインモニタがWUXGAならWUXGAで、インチサイズ、出来れば製品自体も揃えた方が良いのは間違いないのですけど、安いモニタを3枚よりはメインだけ奮発して高いモニタを、としたほうが、私は良いと思ってます。結局視点の8割はメインモニタに集中するので……。

Comment (20)

YK : (08/12 04:56)

初めまして、私もNECの同じ30インチモニタを中心にして
左右にWUXGAモニタを置いて使用しています。環境がかなり似てますね(笑

3090WQXiの奥行きってかなりありますけど、机はどんな物を使用しているのでしょうか?うちの机は60cm程しか奥行きがないので、キーボードもギリギリですし、目も近くなってしまうんですよね;

neuecc : (08/13 00:27)

どもです。
おお、同じ環境の人がいるってだけで嬉しいですよー(笑)
マルチディスプレイって賛同というか理解というか、してくれない人が多くてちょいと寂しい。

手前のガラステーブルが60cm、モニタが置かれている奥のテーブルが35cmです。
一つのテーブルに乗せると奥行きは確かに厳しいですね(そこが30インチの最大のネック!)
奥のは、テーブルといってもエレクターのウッドラックでして、
高さ調節自在、耐久度もまぁまぁなので悪くない感じです。

YK : (08/15 16:13)

なるほど、机2つだったんですか。詳細感謝です!

確かに、そんなに画面いらんだろ…って周りは言いますね。
でも、慣れてしまうと戻れない不思議(3枚でも物足りなさすら感じてしまう)

モニタの発熱で部屋が暑くなるので、この時期は辛いです。
冬は暖房いらずなんですがね(笑

neuecc : (08/17 02:25)

発熱はほんととんでもないですねー。
エアコン必須になるので、それ単体の消費電力と相まって電気代が……
液晶がエコだなんて大嘘ですね(笑)

ksks : (09/06 10:26)

はじめましてこんにちは。
ustreamを使ってみたいと思っているのですが、
保存した「ustream.fme~~~.xml」を「Flash Media Live Encoder3」で開こうとすると
「Profile validation errow」というエラーが出てしまうのですが解決方法はありませんでしょうか(´・ω・`)

neuecc : (09/07 02:47)

軽く検索してみたところ、そんなエラー無視しておk、とか出てますがどうなんでしょうかねえ。
XMLファイルは中身ただのテキストなので、必要そうな部分だけ抜き出して手書き
でもいいんですけどねえ。

ksks : (09/10 23:11)

XMLファイルの中身をコピペしたら出来ました(*´ω`)
アドバイスありがとうございましたー@@

neuecc : (09/11 08:23)

おー、それでいけましたかー、良かったです。

RYUSEI : (11/11 21:50)

はじめまして、参考にさせていただきました!
と、実際にエンコードしてみたのですが、どうしてもゲーム音と音声の同時配信ができません(´・ω・`)
映像は綺麗で、ど音声はちらか一方なら出てるようなのですが・・

なにかアドバイスいただけたら幸いです。

neuecc : (11/13 18:28)

どうもです。
音声がどちらか一方、というのは音声のミキシングが出来ていないからでは?
FMEでは音声のミキシングは出来ませんので、使ってるサウンドカードなり、
オンボードの音声の設定なりに搭載されているソフトウェアミキサーで混ぜる必要があります。
オンボードの場合は、デフォルトだとミキサーが入っていない場合もあるので、
チップメーカーのサイトから最新のドライバーを入れる必要があったりなかったりします。

JiLL : (03/18 17:04)

こんにちわ今ニコ生放送しててユーストの存在を知りググってたどり着きました。
PCの知識自体乏しいのですがこちらに記載されてることをできるでしょうか・・・
ニコ生だと画質上げるとカクカクなり動き重視すると見れたものではないので
向こうでは一応調べてメニカムとFCSHのダブルキャストでやってます。

neuecc : (03/19 20:29)

ニコ生は、自分のPCでエンコードしたのを直接流すってのは出来ないんですよね。
なので、何をどうやっても限界があるというか正直なところ汚いというか。
Flash Media Encoderは別にそんなに難しいものでもないので、
問題なく出来ると思いますよー。

kaz : (04/06 20:04)

Flash Media Live Encoderの利用は、配信に使用するネットワークがFlash Media Server シリーズのみで構成されていないと、ライセンス違反となります。
UstreamがFlash Media Server シリーズのみで配信ネットワークを構成していないと、ライセンス違反ですよ。
twitterでこの記事をリンクした方が居るので、よく調べずライセンス違反を犯す方が少しでも減るように書き込みさせていただきます。
参考:http://www.itoyanagi.name/temp/fuck/d20080318.html

neuecc : (04/06 21:24)

http://helpcenter.ustream.tv/content/broadcasting-higher-quality
FMEの使用はUstreamがガイドを出しているぐらいなので問題ないと思っているのですが、
「よく調べずライセンス違反を犯す方」などと強い口調で言うぐらいなので、
ライセンス違反となる可能性の証拠を掲示していただけませんか?

savi : (04/14 14:03)

始めまして。少々質問させていただきたいのですが、PCゲーム(FPS)の動画を配信しようと考えています。
Ustream、SCFH DSF、Flash Media Live Encoder 3を使えばできそうなのですが、
ただ問題がフルスクリーンモードゲームの時に画面が映りません。
ゲーム画面をウインドウモードにすればいけるのですが、できればフルスクリーンのままで配信がしたく、
方法を探していたところここにたどり着きました。
何かご存知であればご教授ねがいたく。よろしくお願いします。

neuecc : (05/10 00:31)

返信が大変遅れて申し訳ありません。
フルスクリーンは、SCFH DSFを使う限りは無理じゃないかと思います。
じゃあ他ので可なのか、というと、うーん、無理かなあ、ちょっと分からないです、すみません。

匿名 : (06/21 20:46)

環境かっこいいですね!

lilac : (06/22 09:12)

はじめまして。UstreamでダウンロードしたFMEのxmlファイルを開こうとしたら、なにやら構文エラーらしきものが出てしまって使えませんorz
一応調べてはいるのですがどうしても・・・w
もしご存知の事があれば教えていただけませんか?

neuecc : (06/23 20:44)

> 環境かっこいいですね!
どもです^^

> xmlファイルの構文エラー
上のほうのコメントでは「XMLファイルの中身をコピペしたら出来ました」と報告があるのですが、
それでどうでしょうか。

EY : (08/07 01:11)

はじめまして。Ustream配信を始めたいと思いこちらのサイトにたどり着きました^^

様々な設定をし終えたのですが、FMEのStartを押すと
SCFH DSF から
「Target process has been terminated.」と表示され、
FMEとSCFHが勝手に閉じてしまいます。

力添えしていただけないでしょうか><

Name
WebSite(option)
Comment

Trackback(0) | http://neue.cc/2009/06/21_169.html/trackback

Search/Archive

Category

Profile


Yoshifumi Kawai
Microsoft MVP for .NET(C#)

April 2011
|
March 2017

Twitter:@neuecc