機材とかソフトとか

なんとなく、ぼくがニコ生するときに使ってるものを箇条書きにしてみる。ここに書いてある物なら教えて!って言われたら対応できると思う。

ソフト編

  • XSplit
    プレオーダー期間に2年で契約してるけど、レイアウト作りとDirectXキャプチャにしか使って無い。買い切りにして。
  • FFMPEG Launcher
    過去記事を参照して貰うと分かると思うけど、音声コーデックにAAC+を使えるので配信そのものはFFMLを使っている。
    FFMLにXSplit的プレビュー画面とシーン機能が付いたら買い切り5千円までなら出す。
  • FMEAutomator
    枠取りに使ってる。枠を取ったらNCV連携でNCVに番組IDを渡し、アプリケーション連携でFFMLを起動させてる。FFMLでも枠取り出来るんだけど、FFMLは番組終了時のタグを取得出来無いので、その点だけでFMEAを使ってる。それが出来るようになればFMEA要らなくなるんだけど、作者さんに要望出したら「要望が多ければ」ということだった。
  • NCV
    コメントビューワ。特に弄ってない。
  • DeskTopLevelMeter
    指定した録音デバイスのレベルをリアルタイムで表示できるやつ。
  • SCFH DSF
    スクリーンキャプチャ。SCFHの画質悪いって言ってる人は、おそらく解像度の整合が取れていないか、縮小方法が(vista/7の場合)ニアレストになってると思うのでバイリニアにしましょう。

ハード編

FFMPEG Launcherとあかねキャプチャー2とAmaRecTVを使ったニコ生

実際にはあとSCFHとVAM(VirtualAudioMixer)を使います。ローカル録画して確認してみたのですが、もしかしたら音声がたまにぷつぷつするかもしれません。
前回までの記事で、とりあえずFFMLとSCFHは使えるものとします(AAC+は使えなくても良い)。ぼくはシーン切り替えが便利なのでXSplitを併用していますが、XSplit無料版はロゴが入るため、XSplitを契約していない人は別途ビデオソースが必要でした。(ロゴが入っても構わない人除く)
あと、USBヘッドセットを使っているかステレオミキサーが無いかでXSplitなどの仮想ステミキに頼っている人もこの記事で多分どうにかなります。どうにかなるってのは語弊があるけど。そういう場合はどのみち仮想ステミキ使うので。

※7/26追記:ハードウェアなステミキを使っている等の場合、下図でVAMとそれを置換してください

※8/17追記:VAMは遅延があるっぽいので、アマミキ使ったほうが良さそうです

まず

ソフトをインストール等する前に、自分はどちらにあてはまるか考えてください。答えによっては1作業減ります。

  • キャプチャーボードを使ってPS3WiiXBOX360等のゲームをプレイするタイプのニコ生をやりますか

やる人は1番から、やらない人は2番へ飛んでください。
目標は下図みたいになります。キャプボ使わない人は、ゲーム機・キャプボ・あかねキャプチャ2を取り除いて考えてください。

1.キャプボ使う人向け:あかねキャプチャー2のインストールと設定

公式wiki読んでDLして適当な場所に解凍します。適当な場所といってもデスクトップとかそういう意味では無いので。
起動したら画面を右クリックしてプロファイル→プロファイル登録をします。DC-HD1みたいなHDMID端子の二系統があって、端子毎にキャプチャ設定が違う場合に便利です。設定項目はキャプボ毎に違うので他のキャプチャソフトでの設定を参考にしてください。プロファイルが正常に設定出来ていれば、メイン画面を右クリックして再生をぽちります。どうにかしてあかねキャプチャー2がゲームの映像も音声もプレビュー出来る状態にします。AmaRecTV使ってた人なら出来ると思います。

2.VAMのインストール

VAM公式サイトからDLして適当な場所に解凍。現在zip版しか配布されていないので、中に入っているinstall.batを実行してインストール。

3.AmaRecTVとAmaRecTV Liveのインストール

AmaRecTV公式サイトからAmaRecTVをダウンロードして適当な場所に解凍します。AMVビデオコーデックもインストールします。
amarectvのフォルダの中に、live_setup115b.exeみたいなのがあるので実行してLive機能をインストール。115bの部分は違うかも知れません。

4.いろいろ設定

AmaRecTVを起動する。起動しなかったりした場合は公式サイトのFAQを読んでね。起動したらメイン画面を右クリックしてミュートにした後、設定。
グラフ1タブで、ビデオキャプチャバイスにSCFH DSFを選びデバイス設定→上から順に640, 360, 30にする。
次にオーディオキャプチャデバイスでVirtual Audio Mixerを選択し、オーディオデバイス設定をぽちるか、。サウンドバイス一覧から、さっきの図と自分の環境を考えて、ミックスしたいデバイスを選んでください。一例ですが、ステミキ無い人なら使ってるマイクと使ってるスピーカーを選びます。例えば[マイク(Realtek〜〜)]ってやつと[スピーカー(Realtek〜〜)]ってやつ。ここの表記はWindowsの再生デバイスとか録音デバイスで表示されるものと同じなので、右側真ん中あたりの再生デバイスとか録音デバイスをぽちって、音を鳴らしたりマイクに入力しながら使うデバイスを決めたら良いと思います。USBヘッドセットを使っている人は(ぼくは使っていないのでどう表示されるか分かりませんが、とりあえず)USBヘッドセットみたいなことが書いてあって、その形式が録音て書いてある方にチェックを付けます。いずれも、[再生デバイスへ出力しない]を選んでください。OKで閉じ、グラフ3(ライブ)タブへ移ってください。
下部に有る[ライブ機能を使う]にチェックを付けてください。ビデオ設定は30fps、640*360にしてOK。
SCFHを起動し、amarecTV.exeを選んでOK。SCFHのDrag here.からキャプチャしたいウィンドウにドラッグして離せば、離した所を含むウィンドウがキャプチャされる。この辺は適当に試してください。あかねキャプチャー2のウィンドウ上で離せばそれがキャプチャされるし、PCゲーのウィンドウの上で離せばそれがキャプチャされます。

4.FFMLの設定

FFMPEG Launcherを起動します。映像デバイスにAmaRec Video Capture、音声デバイスにAmaRec Audio Captureを指定する。モードを録画に変更して、ちゃんと映像と音声が来ているかローカル録画して確かめてみましょう。

まとめ

  1. キャプボ配信する人は、あかねキャプチャー2起動
  2. AmaRecTVを起動
  3. SCFHを起動、amarecTV.exeを選択
  4. VAM_GUI.exeを起動して、amarecTV.exeを選択、設定を確認してOK。多分しなくても良い
  5. FFMPEG Launcherを起動して設定の確認
  6. FMEautomator使うなりして枠取り、配信開始ヾ(゚д゚)ノ゙

これで出来るとおもふ。
ここまでやって、「あれもしかしてVAMって一回プロセス名に対して設定してしまえばプロセス選択しなくてもミックスしてくれるんじゃね?」って思ったら案の定で、一度FFMLで録画中にVAM_GUI.exe起動してffmpeg.exeに対して設定してしまえばそれでおkだった。→音声に関してはAmaRec Audio Capture使わなくて良い。どっちでもお好きな方を。

[追記]配信中はAmaRecTVは最小化して構いません。この方法ではAmaRecTVは、FMLEやXSplitやNLEで言うところのプレビュー画面に過ぎません。

AAC+を使えるffmpeg.exeをビルドしよう

予定通り昨日の続きです。今日参考にしたサイトは次の通り。
ニコニコ動画研究所
ツールテスト-ニコニコミュニティ
普通の一般人が何かやってる-ニコニコミュニティ
今日はみなさんにAAC+を使えるffmpeg.exeをビルドしてもらいます。元々は【AAC+】 HE-AAC が使える ffmpeg をつくる方法 - ニコニコ動画研究所でまとめられている様に、ものすごく大変な作業でした。CUIに慣れていない人にとっては魔術世界です。ちょっと慣れてる人でもめんどくさ!ってなります。それを超簡単にしてくれたのが、上記ニコニコミュニティのお二人です。どっちでも良いのでコミュ参加してスクリプトをダウンロードしましょう。ぼくはツールテスト(co1482853)コミュで公開されているスクリプトを使ったので、それに沿った説明になっています。

ひつようなもの

次のものが必要です。普通の高校生が何かやってる(co81157)コミュのスクリプトの場合fstabは同梱されています。

じゅんび

CドライブがSSDだから大量の書き込みしたくないという人は別のドライブにしてfstabのドライブレターを書き換えるか、シンボリックリンクを貼ってください。

  1. Cドライブの直下にmsysというフォルダを作ります。msysフォルダの中にDLした物を全て移動させます。
  2. MSYSフォルダの中でPortableGit-1.7.10-preview20120409.7zを全て展開します。
  3. msysフォルダの中でMSYS_MinGW_GCC_470_x86-x64_Full.7zを全て展開します。多分MSYSというフォルダが出来ます。
  4. MSYSフォルダの中身全てをmsysフォルダに移動します。MSYSフォルダの中は空になります。
  5. sezero_20111101-w32-update-rev.4917.zipを全て展開するか中身を閲覧し、i686-w64-mingw32フォルダの中のinclude、lib、libsrcをコピーして、C:\msys\mingw\i686-pc-mingw32の中に貼り付けます。統合し全て上書きしてください。
  1. C:\msys\etcの中にfstabを移動する。
  2. msys.batを実行すると黒いウィンドウが現れるので置いておく。同時にC:\msys\home\[ユーザID]のようにフォルダが作られる。[ユーザID]にはログイン中のユーザIDが当てはまる。この説明ではpoezとする。
  3. ビルド自動化スクリプトの圧縮ファイルを展開しreadmeや説明書に従い、C:\msys\home\poezの中に必要な物を貼り付ける。ツールテストコミュの場合、fAllとffmbz.shの二つ。

ビルドかいし

  1. しばらくPCを起動したままに出来るか確認する。Core i5 2400で40分、コア数指定して30分、i7 3770でコア数指定して20分くらい。
  2. msys.batを実行したときに出てきた黒いウィンドウで、自動化スクリプトのreadmeや説明書に書いてあるコマンドを入力する。ツールテストコミュの場合、一番時間はかかるがfAllと入力するのが確実。fAllを実行した場合、スクリプトが対応している全ての音声コーデックが組み込まれる。
  3. コマンドを入力してエンターを押すとビルドが始まるので待つ。正常に終了していれば数十分後にFinish FFMPEG HE-AAC Buildと表示される。

ビルドされたffmpeg.exeはC:\home\poez\ffmpeg-[Ver番号]の中にあるのでコピーし、FFMLと同じフォルダに貼り付ける。あとはFFMLの音声コーデックでAAC+を指定すればAAC+が使えるようになる。音声ビットレートを48kbpsにして録画して聞いてみよう。
ビルドしたffmpeg.exeではAACが、FFMLが想定していないコーデックに変わっている(変わっていた)ので、もしAACを使いたいのにエラーを吐く場合は音声コーデックにFAACを指定すると上手くいくかもしれない。FFMPEGLauncher.config.xmlを書き換えても良い。

さいごに

もしビルドに失敗した場合は、コメントである程度サポートは出来ますが、スクリプト作者様にコミュ掲示板で尋ねた方が確実かと思います。それから前回も書きましたが、AAC+を組み込んだffmpeg.exeは配布してはいけません。

FFMPEG Launcherをつかってみよう

この記事を書くに当たって参考にしたサイト
画質厨の配信設定研究
初心者向け!ニコ生のやり方解説サイト! - アットウィキ
ニコニコ動画研究所
ニコ生をするときの配信ソフトは何を使っていますか?代表的なものとしては、XSplit、Niconico Live Encoder(NLE)、FlashMediaLiveEncoder(FME)と言ったところでしょうか。この3つのソフトの比較は【NLE】 ここまで使えるニコ生エンコーダー - ニコニコ動画研究所を見てください。ざっくり言っちゃうと、

  • XSplit
    • 有料
    • 12シーンを登録出来て切り替えられる
    • ビットレートとフレームレートは任意
    • DirectX/OpenGL取り込みが可能
    • クロマキー合成とかメディアファイル読み込みとかとにかく多機能
    • 複数サイトへの同時配信が可能
  • NLE
    • 無料
    • ビットレートは何種類かから選択、フレームレートは1-30の間
    • DirectX/OpenGL取り込みが可能
    • ニコ生にしか使えない
  • FME

って感じです。で、ぼくはXSplitを使っているんですが、じゃあなぜFFMPEG Launcherをつかってみようなどとのたまっているかと言うと、音声にAAC+(HE-AAC)を使いたいんですよ。AAC+の特性はぐぐってもらうとして、簡単に言うと48kbpsでCD程度の音質をうたう音声コーデックです。うっそだーって思う人はサンプル用意したので聞いてみてください。それ以外のメリット、他配信ソフトとの比較はこちらにまとめてありました。あ、良いじゃん!って思ったらこの先を読んで使って見ましょう。Windows の ffmpeg で生放送する方法 - ニコニコ動画研究所
オリジナル:初音ミク が オリジナル曲を歌ってくれたよ「メルト」 - ニコニコ動画
AAC+:48kbpsでエンコードしたものを320kbpsのMP3にエンコード
音声が48kbpsでいけるということは、映像に336kbps使えるということで、数字の上では少し画質が良くなるはずです。じゃあどうやって使うのか!

まずはFFMPEG Launcherを使えるようにしよう

いきなりAAC+使うための話をするとややこしくなるので順番に。まずはFFMPEG Launcherを使えるように。長いのでFFMLと呼びます。FFMLを使うためにはFFMLとffmpegが必要なのでDLしましょう。ffmpegは32-bit Builds (Static or Shared)が推奨されています。7zの展開方法はぐぐってください。あと起動するのにMicrosoft .NET Framework 4.0が必要なので、起動出来無かった場合にインストールしてください。
FFML配布コミュ:或ル人ノ棲息地 【ニコニコ実験場】-ニコニコミュニティ
ffmpeg配布サイト:Builds - Zeranoe FFmpeg
それぞれ展開し、ffmpeg-なんとかかんとかの中のbinの中にあるffmpeg.exeをコピーし、FFML_v.なんとかかんとかの中に貼り付けます。下の画像の状態にする。

んでFFMPEGLauncher.exeをぽちぽちっと起動。

FFMLの設定

この記事ではv.0.0.1.5.2を使用しています。まずは基本設定。

  • 映像デバイス:XSplitを契約している人はXSplitなんとかを指定。使って無い人は次のどれかを準備して、映像デバイスにそれを選択。SCFHも使えるんですが、配信している間しかffmpeg.exeと連携出来無いので単体での使用はおすすめしません。SCFH→XSplit→FFMLという風にして使ってください。
  • 映像ビットレートとバッファサイズ:384-音声ビットレートにします。バッファサイズはそれの等倍か2倍にします。
  • 入力解像度の自動認識:チェックしたままで良いと思うけど、映像デバイスの出力解像度が分かるならそれにしても良い。
  • 出力:ニコ生なら640x360で、フレームレートは適当に。24以上なら動画と言えると思う。
  • 音声デバイス:今までの配信で音声デバイスのステレオミックスを使っていればそれを指定。Vista/7の仮想ステレオミキサーか、アマミキなどの仮想ステレオミキサーを使うならそれを指定。仮想ステミキは次のページからどれか選んで使えるようにして、デバイスに指定する。
  • 音声コーデック:今はAACを選びます。AAC+はまだ使えません。ビットレートは80とかそこらが良音質の下限と思ってください。音量は256が100%です。そのままでいいです。
  • モード:ちゃんとエンコード出来るかの確認のために、今は録画にしておきます。保存先を適当に選びます。その右のflvだかmp4だかって書いてあるのはflvにしておきます。ぼくの環境ではmp4にするとローカルに正しく録画出来ませんでした。
  • 入力:映像/音声デバイスにしておきます。ファイルを選ぶとその動画を、ニコ生放送URLやUst放送URLを指定するとミラーが出来ますが、rtmpdump.exeってのが要ります。

次に高度な設定の共通設定タブ

  • エンコードモード:品質基準VBRの30がXSplitでの品質5にあたる。35-XSplitでの品質=crfの値。固定ビットレートとかでも良いと思う。
  • その他のスレッド数:0でCPUのスレッド数を自動判別。0の場合、CPUスレッド数の1.5倍(4コア4スレなら6、HTTで4コア8スレなら12スレ)に自動設定される。0で良い。

コーデックタブへ移り、

  • プリセット:Core i5以上ならslowかslowerくらい。CPU負荷と画質を天秤に掛ける。
  • 外部プリセット:ニコニコ動画研究所様等で配布されているプリセットを使うならこの辺り。使えない値もある。例:min-keyintにautoを指定できない。0を指定する。

次に【FFML】設定タブへ

  • クッキー取得設定:使ってるブラウザを指定する
  • その他:ビットレートを自動的に制御するにチェックを入れると、ニコ生のビットレート制限を超えている場合は、合計ビットレートから音声ビットレートを引いた値を映像に割り当てる。
  • ffmpeg.exeのPATH指定:FFMLと同じフォルダにffmpeg.exeがあれば、ffmpeg.exeと書いておく。他の場所にある場合は参照から。
  • FFMPEG実行画面を表示する:チェックを付けて配信開始するとffmpeg.exeの実行画面が表示される。配信開始をぽちっても配信されないときにチェックを付けてエラーを見よう。普段は外す。
  • rtmpdump.exeのPATH指定:FFMLと同じフォルダにあればrtmpdump.exeと書いておく。ニコ生/Ustのミラーをしないなら不要。

以上で設定は終わり。後は、基本設定のモードを録画にした状態で配信開始をぽちれば指定した保存先に録画され、何らかの方法で枠を録ってモードを配信にした状態で配信開始をぽちれば配信されます。-startオプションを付けて起動すると起動即配信開始してくれるので、FMEAutomatorとかと連携できます。ホットキー送信より-startオプション付けて起動させた方が確実だと思います。

AAC+は?

音声コーデックのところでAAC+はまだ使えませんと書きました。配布されてるffmpeg.exeでは使えないんです。AAC+を使えるffmpeg.exeを配布するためにはAAC+とのライセンス契約が必要らしいです。ですが、コンパイル前のソースであれば配布が可能です。(参照:Windows の ffmpeg で生放送する方法 - ニコニコ動画研究所
というわけで、AAC+を使うためにソースからコンパイルしてffmpeg.exeを作ろう!という話なのです。が、この辺は今度書きます。試してみたい!って人はこの辺読んでください。よく分かんない言葉がたくさん書いてあって拒否反応が出るかもしれませんが、ビルド自動化スクリプトが開発されたので、そのスクリプトとPortableGit-1.7.10-preview20120409.7zとMSYS_MinGW_GCC_470_x86-x64_Full.7zとfstabがあれば出来ます。いずれも直前のリンクから探せばあります。

画質どうなの?

ぼくが出来る環境でちょっと試してみました。同タイミングではありませんがどれもほぼ同じ環境と思って頂ければと。チューンによる細部の違いは分かると思う。とくにanimationチューン。でもまぁあんま変わんないよね∠( 'ω')/
比較画像 ※いずれも同じ速度で前方に進んでいる最中です

TeamSpeak3でホストメッセージをMODALQUITにしちゃった場合の対応

ServerAdminグループだけはMODALQUITでも入れたら良いのに。めんどくさすぎだろうこの仕組み。
windowsの場合telnetを使えるようにする。方法はぐぐってください。

telnet localhost 10011
telnet接続の後(ローカルPC以外ならlocalhost→サーバのIP)
login client_login_name=serveradmin client_login_password=[pass]
でログイン試行。[pass]は初回起動時に表示されたやつを入力。保存してなかった場合は終了。ts3server.sqlitedb削除して再構築しましょう。ログインに成功したら
error id=0 msg=ok
と表示される。この文はエラーは無いよってことなのでコマンド送信後にはこれが出ていればおk。で、
use sid=1
でバーチャルサーバを選択。よく分からなければ1でおk。最後に次のコマンドでホストメッセージのモードを変更する。
serveredit virtualserver_hostmessage_mode=0

Minecraftサーバの古くなったバックアップを自動削除

LinuxMinecraftRAMDISK運用する場合、HDDへのバックアップはほぼ必須だ。UPSがあれば保存する余裕があるが、突然電源が落ちれば全て消えてしまう。そうでなくても、不測の事態に備えるためにバックアップは必要だ。
2013-01-26追記
少なくとも正式版1.4世代では、この方法だけではワールドのバックアップが不完全。
Minecraft RemoteToolkitなどを使い定期的にマップを保存した後に、バックアップが実行されなければならない。
追記ここまで

ぼくはUbuntu Serverを使っているが、バックアップは次のスクリプトをcronで正時に自動実行している。

rsync -a /media/ramdisk/mcserver/ /home/user/backup/`date +%m%d%H%M`
これで例えば2月4日10時00分に実行された場合、02041000というディレクトリが自動的に作られバックアップされる。
ところが、正時に実行し続けると1日で24個、1週間で168個、30日で720個ものディレクトリが生成されることになる。マップが大きくなりサーバ群のサイズが100MBもあれば、30日で72GBと肥大化する。それに30日も前の、いや1週間前のデータですら、必要なのか?という疑問も浮かぶ。日々どころか時々刻々と変化するMinecraftの世界で3日前からやり直しと言われたら、やる気がなくなるだろう。ぼくはやる気を無くす。
そこで、バックアップデータは2日以上経過した時点で削除したい。マルチの世界で何か異変があったりしても、48時間以内には誰かが気づいて知らせてくれるだろうという希望的観測に基づき、2日にした。「いやいや4日くらい無いと」という人は4日にすれば良い。ぼくは2日。

バックアップ自動削除スクリプト

じゃあどうやって消すの?という話だけど、次のスクリプトで実現できてる。

rm -r /home/user/backup/`date +%m%d%H%M -d '2 days ago'`
自動パックアップスクリプトとの大きな違いは後半部分の``で囲まれた部分。ここってなんというか、簡単なコマンドを記述出来るみたい。試しにターミナルで date +%m%d%H%M -d '2 days ago' を実行してもらうと分かるのだけど、これは実行時点から丁度2日前の時刻を表示する。 date は日時表示コマンドで、 +%m%d%H%M が表示フォーマットの指定、 -d '2 days ago' で2日前を指定している。-d '2 days'だと2日後の指定。linux dateでぐぐると詳しい説明が出てくる。
2012年2月16日追記:dateコマンドはlinux系とBSD系で微妙に違うらしい
では上のスクリプトをどの様に実行しているのかと言うと、ぼくはバックアップと同時に実行している。つまり次のような1個のスクリプトにまとめている。
rsync -a /media/ramdisk/mcserver/ /home/user/backup/`date +%m%d%H%M`
rm -r /home/user/backup/`date +%m%d%H%M -d '2 days ago'`
これが正時に実行されれば、現在時刻でディレクトリを作成しバックアップした直後に、丁度2日前のバックアップディレクトリが削除される。これでバックアップディレクトリは常に48個になり、使用領域の肥大化を防ぐことが出来る。

Minecraft1.8 個人的に気になること

  1. メモリの消費量が増えた?→サーバクライアント共にCPU/メモリの消費量が増えた?
  2. マルチプレイで新しい地形をロードして描画する際、GeForce系のグラボで描画がしばらく止まることがある。GPU使用率はいつも通り。全てのGeForce系グラボで発生するわけではない。
  3. サーバソフトのCPU/メモリ消費量が増えた?

サーバの消費リソースの増加は別に良いんだけど、GeForce系グラボの不具合はなんとかしてもらいたい。とは言え少なくとも公式wikiのパッチノートにはバグとして報告されていないのでどうなるのやら。ドライバを旧バージョンにしてもう一回試してみよう。
この不具合はWinXPでもWin7でも確認しているが、GeForce系グラボだから出るということでもない。Win7+GeForceでも出るケースと出ないケースがある。一方でRadeonIntelで今のところ確認していない。
サーバの消費リソースの増加が関係するかと思ったが、そうであればGeForceに関わらず起きるがそんなことはない。