MonsterX-i を用いた PS3 プレイ画面のストリーミング配信

blog.li.nu >
この記事が役に立ったら
投げ銭も受付中です(更新は滞っていますが2017年現在も元気です)。
Monacoin: M9VkYEVo59mQUsWt9tRDfNi6b9SBNqMSyz
BitZeny: ZgD57J2vDBTBcSXgg814Fr8MrgNqpyC3n6
 MonsterX-i の入手により、パソコン上でゲームをして、その画面を撮影できるようになった。また、私は特に興味はないのでやっていないが録画も出来るようになった。次なる目標は、せっかく画面を撮ることができているのだから、動画配信だということで、オンラインでキャプチャ画面をストリーミング配信するのを試してみた。
1. 必要なもの
 まず、これを行うには当然それなりの資材が必要。ストリーミング配信をするということは、生の画面をリアルタイムでエンコードしてそれをさらにインターネットを通じて送信するということ。CPU の性能に左右されるところが大きい。もちろん、配信解像度がハイビジョン並だとか、そういうことをしたいのなら、Core 2 Quad のようなクアッドコアは必須といってもいいだろう。私は Xeon E3110 (Core 2 Duo 同等品) の 3.00 GHz を 3.6GHz にした状態で試してみたが、1280x720 は重すぎてコマ落ちが激しく、開始してから 1 分もしないうちにフリーズしたあとブルースクリーンになった。
 また、これは住んでいる場所に依存するのだが、当然高画質 (SD 解像度なら 1.5Mbps もあれば十分くっきりと写る) で配信するのならそれを毎秒送り出せるだけの回線が必要。ADSL では非常に厳しい面があるので、高画質配信がしたいなら光回線を推奨する。
 これら以前の問題として、当然、キャプチャ環境もひととおりそろっていることが前提になる。安くて画質もいいキャプチャボードがほしいなら、MonsterX-i をおすすめしておく。それにソースとしてこれも当然だが Playstation 3 も必要。これらを考慮すると、機材が全くないという場合、十万円以上の出費を強いられる可能性が高いので、注意が必要。コンピューターが非力ならば、600kbps 未満にしたり、フレームレートを下げることで大幅に負荷を軽減することも可能だが、動きがなめらかではなくなり、画質もひどく粗くなるので、妥協点を見いだす必要がある。
2. justin.tv のアカウントを作成する
 配信方法だが、もちろん自分がサーバーになってクライアントに直接接続させる方法もある。しかしこれだと、自分の回線・パソコンに負担をかけ続ける羽目になるし、画質を高く設定した場合同時に見ることの出来る最大数も非常に限られてくるので、ここではオンラインストリーミング配信サービスを使う。これは、自分がそのサービスにソースをリアルタイムで送れば、かわりにそのサービスが配信元として他のユーザーにその映像を届けてくれるというもので、自分がサーバーになる必要がなく、回線やコンピューターの負荷も最小で済む。そういったサービスは最近多数存在が確認されるようになったが、ここでは justin.tv というところを使ってストリーミング配信を実行する方法を試す。まずは、配信のためのアカウントを作成しなければならない。
001.png
サイトに到着したら、右上から "Create Account (アカウント作成)" を押す。
002.png
このような画面が出てくるので、必要事項を記入する。Login (登録名)、Password (パスワード)、Birthday (誕生日)、Email (メールアドレス) を入れるだけ。一番下の奇妙な欄は、そこに書いてある文字をその下の欄に書き写す。終わったら Sign Up (登録) を押す。これだけで登録が完了する。完了したらさっそくメールが届くので、とりあえず届いているのを確認する。届いているなら正常にアカウントを作成できた。
3. チャンネルの設定
003.png
登録したらもうログインしている状態になっているので、自分が配信する映像 (チャンネル) や、自分自身の設定をするため、Settings (設定) を押す。
004.png 005.png
ここで自分の配信映像 (チャンネル) の設定をする。大事なのは Info のところだけなので、ここさえ正しく設定しておけばよい。
006.png
入れたい項目を一通り記入したら、最後にこれらの中で適切なものにチェックして保存する。 一番上の、16:9 画面にするオプションは Playstation 3 の場合、16:9 出力が基本なので入れた方がよい。高画質指向なら、なおのこと推奨される。これで、チャンネルの設定ができたので、サービス側の設定は一通りできたから、実際にここに映像を送るための道具を用意する。
4. Adobe Flash Media Live Encoder 3 と SCFH DSF のインストール
 普通の配信は Web カメラで行われることを前提にしているので、接続さえしていればすぐに配信できたりするのだが、Playstation 3 の映像配信となるとそう簡単にはいかない。まず、流れている映像を justin.tv 側にリアルタイムでエンコードしながら送信するソフトが必要である。これを行ってくれるのが、Adobe Flash Media Live Encoder 3 というソフト。公式サイトから無料でダウンロードできるため、Adobe ID を取得したのちダウンロードする。未登録ならば、Adobe ID に、自分のメールアドレスを入れ、パスワードは、まだ未登録なので、No, I will create one now を選んだのち Continue を押して、氏名など * がついた必須事項を入力ののち登録、あとはダウンロードしてインストールするだけ。
 次に、Adobe Flash Media Live Encoder 3 に、任意のキャプチャを送信できるようにするため、SCFH DSF というソフトを使う。Flash Media Live Encoder 3 自体は、登録されたデバイスからの入力をそのまま指定した接続先にストリーミングだけのもの。ここで普通に MonsterX が選べれば嬉しいのだが、実際選べるものの、大人の事情で選択しても画面が真っ黒でどうにもならず、このままではMedia Live Encoder 3 に映像を送ることができない。そこで、このソフトがデスクトップ上の任意の長方形を切り取って映像として Media Live Encoder 3 に送信する役目を果たすのだ。こちらによって切り取られた映像は、ちゃんと Media Live Encoder 3 で表示される。インストールについては、向こうのサイトでも書いてあると思うが、Visual C++ 2008 プログラムを実行するためのパッケージが必要なので、無い場合は先にインストールしておく。
007.png
最初に、OS が 32bit、普通そうだと思うが、そうなら install32.bat を押して、環境を整えておく。これを実行すれば向こうが勝手に整えてくれる。これで配信までもう少しという段階まできた。このプログラムを実際に起動するときは、SCFH.exe を実行する。
5. Flash Media Live Encoder 3 の配信設定
016.png
 映像・音声の設定の前に、まずプロフィールを作成しよう。プロフィールとは、配信する先、音声・映像設定全て含めて一つのひな形としてすぐに扱うことができるようにするための便利な道具である。つまり、justin.tv 専用のプロフィールを作る。別にプロフィールなど作らなくても配信の方法が一種類だけならそのままそれぞれの欄に必要事項を記入して終わりなのだが、わざわざ作るなどといっているのは、その設定事項のうちの "接続" 設定にあたるものが、justin.tv 側で既にプロフィールのファイルとして用意されているからである。だから、まず向こう側でその用意されているプロフィールをダウンロードして、接続設定以外をその後記入し、配信開始というかたちになる。プロフィールのファイル (xml) を入手するには、justin.tv に再び接続して、右上の Broadcast (放送する) ボタンを押す。
017.png
すると、Web カメラへの接続を要求する画面が全面に出てくる。しかし、使わないからといってアクセスを拒否してしまうと永遠にその画面のままである。あるいは、許可しても、接続されていないとブラウザがクラッシュするので、とりあえずこの前面に隠れてうっすら後ろに見えている項目の "More" という項目の中にそのプロフィールが用意されているので、たとえば Firefox なら、メニューバーから "表示 → スタイルシート → スタイルシートを使用しない" で一時的にスタイルシートを切る。
018.png 019.png 020.png
切ったら、今まで隠れていた More を選ぶ。次に、Flash Media Encoder を使っているので、その項目を押す。最後に、Flash Media Encoder に関するページが現れ、ここに Flash Media Live Encoder 3 用の justin.tv 向け設定ファイルが用意されているので、FMLE3.0 の方を、コンピューターに保存する。そうしたら、もうこの画面に用はない。次に、また Flash Media Live Encoder 3 の画面を出す。
021.png
メニューから、File → Open Profile を選び、今ダウンロードした XML ファイルを指定する。すると、上の画像のように、送信先が justin.tv に向けられる。Stream 欄はアカウント固有のものであるため、ここでは誰も使わないとは思うが一応伏せた。Connect ボタンを押してみて、エラーが出ず正しく接続されて、Disconnect ボタンになったら、接続が正しく行われているので、映像・音声さえ設定すれば今すぐにでも配信できるという状態である。
6. Flash Media Live Encoder 3 と SCFH DSF の映像設定
 いよいよ、映像・音声の調整をする。Flash Media Live Encoder 3 を起動する。
008.png
上の二つの画面は、それぞれ Input (入力) と Output (出力画面) を表している。下のいろいろと設定項目があるところで、詳細を固めていく。
009.png
映像設定はこちら。Device は、MonsterX BDA Analog Capture が二つあるが、どちらを選んでも正常に入力が表示されないので選ばないで、先ほどインストールしたことによって追加された SCFH DSF を選択する。すると、先ほどの画像のように Input がデスクトップ画面のキャプチャになる。初期状態ではウィンドウの左端からしか切り取ってくれないので、実際に SCFH DSF を起動して、ゲーム画面がある場所をキャプチャ先に指定する。ということで、ここでキャプチャソフトを起動して、ちょうど切り取りたい大きさに縮めてから他のウィンドウが絶対に重なったりしないように注意しつつソフトのウィンドウを配置する。ストリーミングはリアルタイムエンコーディングの連続であるため非常に負荷がかかり続ける作業であるから、突発的な負荷を防ぐためアンチウィルスはじめ常駐ソフトは全部終了させておく。処理落ちはそのままコマ落ちに繋がることになる。また、負荷を常に監視するためタスクマネージャを起動しておく。以上から、画面の広さとしては、できれば余裕をもってフルハイビジョン以上 2 画面構成が好ましい。私は、以下のようにウィンドウを配置した。
010.jpg
これなら、あまり好ましくないが左の空いた画面でインターネットやメールのやりとりくらいは出来る。ここまではいかないにしても、少なくともディスプレイの解像度は WUXGA (1920x1200) 水準をお勧めする。でなければ、必要な情報をリアルタイムでこのように監視できないし、誤操作によってキャプチャ中のウィンドウの上に何かかぶせてしまったりする可能性が高くなってしまう。SCSF DSF は、ウィンドウの中身をキャプチャしているのではなく、あくまでもデスクトップ上の任意の領域をキャプチャしているだけなので、目的のウィンドウが何であろうがその位置に何か上に被さる物があったらそれがそのままキャプチャ結果になることを注意しなければならない。マウスポインタなども乗せると反映されてしまう (ちなみにこれは設定で消せるが、ウィンドウの被さり等はどうにもならないので注意)。
 さて、キャプチャソフトのウィンドウの大きさ、つまり配信解像度に直結することだが、これに関して、Core 2 Duo クラスの CPU では、1280x720 の解像度でキャプチャするとまだストリーミングは開始されてもいないのに CPU 使用率が 80% 近くになるので、間違いなくストリーミング開始後フリーズ → ブルースクリーンの流れをたどることになるから、720p の出力解像度である 1280x720 のちょうど半分、640x360 という解像度をおすすめする。だから、キャプチャソフトだとちょうど "50%" の設定にしておけばいい。
011.png
キャプチャソフトを適切なウィンドウの大きさにして配置したら、SCFH DSF を起動して、Flash Media Encoder 3 が正しい場所を切り取るよう設定を変更する。まず、このように起動しているソフトの中での対応ソフト一覧が出るので、Flash Media Live Encoder 3 を選んで、OK を押す。
012.png
次に、Flash Media Live Encoder 3 に送る切り取り元を指定する画面が現れる。まず、キャプチャソフトの方で、描画画面の大きさを先ほど 720p の出力解像度の半分、640x360 と決めたから、Size を 640x360 に設定する。次に、Target 欄にある "Drag here." と書いてあるボタンを、キャプチャしたいウィンドウのところまでドラッグする。ここでは、キャプチャソフトの実際に描画されているキャプチャ画面に持って行く。すると、Caption が切り替わって ActiveMovie Window (VideoRenderer) となる (これは、上で用いられているキャプチャソフト "ふにああ" の、実際に動いているキャプチャ画面のコンテナの名称)。これは、キャプチャソフトのキャプチャ内容をそのままキャプチャ映像として送るようになったということを意味するので、ウィンドウ自体は動かしても問題ない。ただし、先述の通り上に何かをかぶせたりはしてはならないので、なにも被る心配がない、安全な場所に配置しておく必要がある。設定が出来たら Apply を押してプログラムは終了せずにそのままにしておく。プログラムが起動していて、この設定が有効である間、Flash Media Live Encoder 3 の Input が、ちゃんと指定された映像になっているのが確認できるはずだ。
 これが確認できたら、次は Output の設定に入る。画像にあるとおり、BitRate と Output Size の項目がある。Output Size は実際に出力される解像度なので、先ほど決めた 640x360 を入れておく。BitRate は、秒あたりどれだけの情報量を含ませるかを決めるものであり、単位は kbps (キロビット毎秒)。単純にこの欄に入れた数字を 8 で割った数が実際に送信されるデータの毎秒あたりのキロバイト量になる。MP3 の 8kbps などはもはや壊れたラジオ並の低音質でしかないのに対して、320kbps にもなれば正直 CD で聴いたのと全く見分けが付かないように、ビットレートで画質は大きく左右される。この解像度でくっきりうつしたいならおよそ 1.5Mbps (1500kbps) 以上を推奨する。ただし、少なくとも Core 2 Duo 以上の CPU は必須となるので、非力であるという場合は、 600kbps 未満でも特に問題は無いが、文字などがにじんで読みにくく、あまりにもレートが低いと最悪読めなくなる可能性はある。文字が読めなければどうしようもないゲームならば非力なマシンでの配信はそれなりに厳しい。ちなみに justin.tv では 600kbps 以上が HQ (高品質) 動画として認められており、HQ マークが付加されることになっているの。Format は、VP6 と H.264 が選べる。H.264 は圧縮方法が優秀であるが、エンコードが非常に重いので特にこだわりがないなら VP6 のままでよい。FrameRate は画質に次いで重要な要素。これは、秒あたり何枚の絵を送るかを設定するもの。PS3 のゲームはたいてい 30fps なので、30.0 を指定すればよいが、これも当然秒辺りたくさんの絵を送ることになるから、コンピューターの負担になるので、厳しいようなら 15.0 あたりに落としておくのもよいだろう。ただし、これもビットレートと同じく、むやみに下げれば節約できて嬉しいというものでもない。当然 1fps などだと、1 秒に一回しか絵が動かないのだから、紙芝居状態になる。これらの項目は、最初は無理のないようにしておいてから、だんだんコンピューターの性能と相談しつつ上げていくのが好ましいといえる。
7. YAMAHA GO 46 での音声設定 (SPDIF 入力方法)
 映像は正しく取り込めるようになったら、次は音声を取り込まなければならない。MonsterX-i の場合、キャプチャソフトとして MxCapture などがあるが、これでキャプチャを行うと画面が定期的に激しくコマ落ちしてしまうため使い物にならない。そこで、ふぬああを使ったわけだが、このソフト、実は MonsterX-i の音声入力の音声をそのまま出力することができない。つまり、無音になってしまう。なので、かわりにマザーボードの背面に音声端子を変換して Flash Media Live Encoder 3 の音声入力としてもよいと思うが、私の環境ではこれらのパネルは利用しておらず、YAMAHA の GO46 (下位版 GO44) というオーディオインターフェイスでのみ音声の入出力を行っているため、GO46 を使って PS3 の光デジタル入力端子経由で高音質な音声を取り込むことを試してみる。そのためには当然最初に SPDIF 端子のケーブル、いわゆる光デジタルケーブルを購入しておく必要がある。光デジタルで音声を入力する利点としては、デジタル入力なので劣化が (入力の時点では) 全く生じておらず、非常に高音質なまま配信できるという点がある。とくにノイズなどの面で有利だが、結局出力は個々のアナログ機器であるイヤホン・ヘッドホン・スピーカーになるわけだから、視聴者の環境依存になってしまう。それでもソースが高品質だというのは前向きな点なので、映像・音声ともに高品質を目指すならデジタル入力に挑戦してみよう。ちなみにパソコンのマザーボードについている光デジタルはほとんど全て光デジタル出力なので、ここに差し込んでも音声は受け取ることができない。
 ケーブルを用意したら、片方は PS3 に、もう片方は GO46 の裏面の DIGITAL IN に差し込んでおく。これで、機器の設定は完了したので、PS3 で実際に光デジタル端子出力になるよう設定する。
mx_20090627175323.jpg mx_20090627175327.jpg mx_20090627175330.jpg mx_20090627175335.jpg
設定はこのように簡単に行える。対応フォーマットを選ぶ欄はとりあえず初期状態のままにして、→ ボタンで飛ばす。これで PS3 が光デジタル端子で音声を出力するようになった。次に、実際に GO46 が信号を受け取るように設定する。GO46 付属の CD からインストールしたソフトウェアを起動し、Output & Settings を選ぶ。
013.png
ここで、最初は INTERNAL というボタンが選択されているが、もう片方の EXTERNAL (外部) ボタンを押し、これに設定を変えても SYNC が赤くなっていることを確認する。INTERNAL は、FireWire 端子でパソコンから直接受け取っている信号を入力にする設定であり、EXTERNAL は、外部端子からの信号を入力にする設定である。これで、信号を GO46 が受け取るようになったので、適当に PS3 で音声を流して、Windows の音声のプロパティから、GO46 SPDIF In (光デジタル入力) が音声を受け取っていることを確認する。
014.png
このように、右側の音量ゲージが上下していれば、ちゃんと音声を受け取れているということなので、音声の設定は正しく行うことができた。あとはこの GO46 SPDIF In を Flash Media Live Encoder 3 の Audio Input に設定すればいいだけ。
015.png
ちゃんと、上の音量ゲージが反応していることがわかる。これは、実際に音声が流れてきていることを意味する。その下の欄などで、動画といっしょに配信される音声の音質を決める。普通は MP3 でよいだろう。こだわるなら 192kbps あたりでよいと思うが、これも余裕がないからといって 32kbps とかめちゃくちゃな音質にすると聴くに堪えない音質になるので注意。最低でも 64kbps くらいにはしておこう。
 結局は、GO46 でなくても、ちゃんと入力端子に PS3 の音声端子をつないで、その入力から音声が流れていることを確認した上で Flash Media Live Encoder 3 の Device にそれを設定して、上のように音量ゲージが反応していることさえ確認できればいい。これで、動画、音声ともに配信する準備は全て整った。
8. 配信開始
 配信するには、下の緑の Start ボタンを押せばよい。これで、justin.tv の自分のチャンネルの映像がこの Flash Media Live Encoder 3 の Output 欄に表示されている画面になり、配信がちゃんとできていることになる。確認したい場合は、自分で自分のチャンネルに訪問してみるといいだろう。音声が微妙に遅れて二重に鳴るためちょっとうるさいが、自分のチャンネルに正しく配信している映像が流れていることを確認できるはずだ。終わるときは、当然右の Stop で終了すればいい。(細かい説明は後に掲載予定)
 これで、一通り配信ができるようになった。興味がある人は試してみてほしい。
その他
・配信中何でもないのに勝手にブルースクリーンになる
 → 復旧後、BCCode : 124 というのがエラー情報にあったなら Daemon Tools が怪しい。system32 の drivers フォルダにある sptd.sys を削除 (Daemon Tools を諦めて他の何かを使う) すると、解決する可能性が高い。
・FMLE3.0 の Output 画面が横長になって変な黒帯が出現した
 → SCFH DSF の設定が勝手に切り替わってしまうことがある。SCFH DSF を起動し、Layout ボタンを押すと、640x360の枠が完全に使い切られていない (緑枠が画面の大きさと一致していない) ならば、それを引き伸ばして画面の大きさに重ねれば直る。
・FMLE3.0 を起動したら勝手にウィンドウが消滅した。しかもプロセスはなぜか終了せずにそのまま残っている。
 → どうやら MonsterX BDA Analog Capture Device を指定するとそのようになってしまう場合がある模様。こうなった場合は、二重起動して Device を SCFH DSF に設定したのち二つともプロセスを終了して (片方は強制終了になるが) 再起動すれば直る。
・ふぬああだと配信には都合はいいがスクリーンショットが重すぎて使い勝手が悪いし、配信中画面を途切れさせたくはない。
 → デスクトップキャプチャソフトを利用する。たとえば "画面ライター" などで、キャプチャすればいい。しかしデスクトップキャプチャのため解像度は表示解像度と一緒。それが嫌ならふぬああのキャプチャで我慢するしかない。Core 2 Duo では重すぎて無理だったが、配信解像度が 640x360 の場合、Core 2 Quad ならば表示解像度自体は 720p でもほぼなめらかに動かせるので、720p 表示でこれらのソフトを使えば全く問題ない。

その他の記事

コメント

名前 :
電子メール :
URL :
コメント