高画質を実現したいという方へ!【FFMPEG Launcher+XSplit】
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

高画質を実現したいという方へ!【FFMPEG Launcher+XSplit】

2013-09-14 00:11
  • 3
  • 148

お久しぶりですね。
ニコ生配信されてる方も、そうでない方も、ニコ生楽しんでいらっしゃいますか?

配信していらっしゃる方の中にはこういう悩みを抱えている人も多いのではないでしょうか。

「あの生主さんはあんなに高画質で配信してるのに自分はなんで画質よくないんだろう」
「PCのスペック上げたのに放送の画質は上がらない」

ニコ生は外部配信サイトと比較して低画質と評される事が多いですが、FMEやXSplitの登場でそれなりの画質は出せるというイメージが今は強いと思います。

・・・それでも高画質というイメージには程遠い。


というわけで、普段から画質いいと言われる私の配信の設定をご紹介したいと思います。

使用するツールは、
 1. XSplit (有料版)…配信する映像のレイアウトなどを決める
 2. FFMPEG Launcher…1で作った映像を放送できる映像に変換する
の2つです。

もうすでに、XSplitを使用されている生主の方も多いと思いますので、まずはXSplitを映像ソースとしての設定方法を紹介します。

①XSplit編

まず、キャプチャする解像度を決めてあげましょう。

ニコ生では主に2つの解像度での配信が行われています。
512×384という4:3の縦横比の解像度と、640×360の16:9の解像度です。
視聴ウインドウにピッタリになるため、この数値がニコ生では最適とされています。
私は640×360の解像度でしか配信してませんが、映像ソース(ゲームやウェブカメなど)のアスペクト比で決めてあげるのがいいかなと思います。


ツール->一般的な設定->解像度から使用する解像度を選択、なければ追加して下さい。
私的には512×384、640×360の2つに960×720、1280×720を合わせるのをおすすめします。
あとは一般->仮想カメラ出力を利用するにチェックを入れ、マイクのデバイスも設定して下さい。
そしたらOKを押して下さい。

次に表示->解像度で使用する解像度を選択しましょう。
また同じく表示タブよりフレームレートを25以上に設定します。
ベストは30fpsです。

さぁ、XSplitの設定は以上で完了!
あとは映像を取り込んでレイアウトを決めるだけでおしまいです。



②FFMPEG Launcher編

ここからが本番!
すでに他のサイト様等でも紹介されている導入方法を序盤は紹介することになります。

まず必要なもの。
・FFMpeg 32bit
・FFMPEG Launcher

今回使用するFFMPEG Launcherはふぁん氏のコミュニティにて公開されています。まずそちらをDLしてWinRAR7-Zipを使って解凍してください。
わかりやすいところに展開しておくことを勧めます。

FFMpegについてはこちらを参照し、各種音声コーデックに対応したFFMpegを用意されることをおすすめします。
最新版のFFMPEG Launcherではむしろビルド済みのFFMPEG.exeを用いていることが考えられているので、ビルドしておいたほうが無難です。
手順については上記のサイトにて紹介されていますが、簡単に言うと


 1. ツールをDLする
 2. 生成するHDDに対応したファイルを起動する
 3. 任意のキーを押し構築成功と表示されるまで待つ
 4. C:\MSYS\msys.bat(Cドライブの場合)を起動する
 5. $cd bと入力し、tabキーを押して残りが表示されたらENTERキーを押す
 6. $./0と入力し、tabキーを押して残りが表示されたらENTERキーを押す
 7. 「MSYS\home\(ユーザー名)\b_build\_binにffmpeg.exeとDLLを保存しました」
 8. 指定の場所に生成された.exeと.dllの全ファイルをFFMLのあるフォルダに移動する


要約するとこんなかんじです。この通りに従って下さい。
FFMLのあるフォルダというのは、先ほど解凍して展開したフォルダです。
FFMPEGLauncher.exeというファイルが存在しているフォルダに必ず入れて下さい。

さぁいよいよ終盤です。
ここから本題の高画質化設定というところに入ってきます。
まずは私の設定を載せてそこから解説を行っていきます。



【映像】
デバイス:XSplitBroadcaster コーデック:x.264
ビットレート:432kbps バッファサイズ:864kbps
自動認識:有効
出力解像度:640x360 フレームレート:30fps
【音声】
デバイス:XSplitBroadcaster コーデック:FDKAAC
チャンネル数:stereo
サンプリングレート:48000Hz ビットレート:48kbps
音量:256(default) 


まずこれが最初の画面。
基本設定というところで、映像デバイスや音声デバイスを決定します。
映像も音声もどちらもXSplitBroadcasterにしましょう。ビットレートは映像と音声で合わせて480kbpsを超えていればなんでもいいです。

ここで少し解説に入りますが、ニコ生には主に2つの時間帯があります。
2:00~19:59のサービスタイム20:00~翌1:59のゴールデンタイムの2つです。
サービスタイムはビットレート制限が480kbpsなのに対して、ゴールデンタイムは384kbpsしか出せません。ビットレートの高さが画質に直結するといっても過言ではないので、ゴールデンタイムは画質が落ちやすいということが言えますね。
ビットレート制限を大幅に超えると配信がサーバーから遮断されるなどされます。
「じゃあなんで480kbpsでいいの?384じゃなくていいの?」という質問には後述にて解答します。

ビルドしたメリットが早速ここで活かせます。
なぜビルドしたほうがいいかなのですが、少ないビットレートで音質を維持するためです。
音声のビットレートを下げた分映像に振れるので高画質が実現しやすくなるのです。
なので、音声のビットレートは48kbpsを基本にしてそこから下げたりしてみましょう。

モードというところでは配信しながらの同時録画の設定などができます。
私は配信+録画にして配信することが多いです。
ちなみに配信のみの場合でも保存先が有効なフォルダでないと配信できないので注意しましょう。



【エンコードモード】
品質基準VBR:15.0(23.0基準で考えるとよい)
【映像】
ピクセルフォーマット:yuv420p
フィルタを有効にする:unsharp=3:3:1.5(0.6を基準で考えるとよい)
【映像2】
リサイズオプション:有効 lanczosにチェック(リサイズが不要な場合も念のため)
【その他】
スレッド数:0
real-time buffer:256MB(チェックを入れないとプツプツすることが多くなります)
 


こ こから個々の環境に合わせての設定が必要になってきますが、主にはVBR値とフィルタ設定ですね。crfの値は小さければ小さいほど高画質になる特徴が あるので、私の場合は15まで下げています。フィルタも1.5だと少々キツイくらいなのですが、エッジ感のある映像が好きなので高めに設定しています。 フィルタに関しては探せばいろいろと便利なフィルタの数値が転がっているので調整してみると楽しいと思います。



【映像】基本プリセット(プリセット指定で入力されていない数値はここを参照します)
プリセット:medium(正直なんでもいいと思います、無難にveryfastあたりがいいかも)
プロファイル:high
チューニング:none(film、animationなど映像ソースにあったチューニングをするみたいです、別にいらなかった)
【音声】プリセット…FDKAACを音声コーデックとしている場合、指定
プロファイル:aac_he_v2(3段階あるうちの最高クオリティ)
SBR/PS:implicit(defaultのままだと配信できなかったという報告あり)
品質向上オプションを有効にする:有効
【外部プリセット指定】
x.264形式のプリセット指定:
me=umh:ref=6:bframes=3:trellis=2:subme=10:keyint=400:mixed-refs=1:aq-mode=2:b-adapt=2:chroma-qp-offset=2:direct=auto:ipratio=1.41:partitions=i8x8,i4x4,p8x8,b8x8:qpmax=51:qpmin=10:ratetol=10:rc-lookahead=30:colormatrix=smpte170m:min-keyint=1:psy-rd=0.20,0.00:chroma-me=1:cabac=1:no-dct-decimate=0:mbtree=1:deblock=-2,-1

 


きっと多くの方がここで投げ出しそうになることでしょう。
でも、あきらめないで下さいね。
プリセットについてはいじるところはほんの少しだけです。主に品質大幅向上と負荷増大に関わるところなので、ここだけ動かせば間違いないというところだけ紹介します。


1. me(動き予測アルゴリズム)
dia < hex < umh < esa < tesaの順で高画質になり、エンコードも重たくなります。
ただ、esaとtesaはumhと画質面で大差ない上に負荷が大きくなるので、umh推奨。
これでも重けりゃhexやdiaに下げてください。

2. ref(参照距離)
参照に使えるフレームの最大距離数。と言ってもよくわからないので、数値が高ければよく動く映像は画質が上がるよ、ということでおk。
3くらいはほしいところ。大きくすればするほど大して変わらなくなってくる。

3. bframes(最大Bフレーム連続数)
圧縮率の向上が望めるが、処理が遅くなる。3が理想。大体bframesの2倍をrefに設定するといいらしい。
ということで自分はref=6とbframes=3の設定を使用。

4. trellis(レート歪み最適化)
解説しても多分よくわからない。圧縮率の向上につながるらしい。エンコードの時に生じた端数の扱い方の指定。
0(None),1(Last MB Encode),2(All MB Encode)で2に設定することを勧めるます。

5. subme(サブピクセル動き予測)
高いほど動く映像に強くなる。二次関数的に数値が大きいと負荷が増大する。
11まで指定できるが個人的には6~10をおすすめ。

6. keyint(IDRフレーム間隔の指定)
フレームレートの10倍程度が目安。シークの幅もこの数値に依存する。
私は300より少し圧縮率を高めて400に設定。



以上をいじれば大体重くするのも軽くするのも自在になるはず。
ちなみに相互の数値は依存しあうことも多いので、一つを極端に動かすよりはバランスよく動かしたほうがよいです。
ちなみにXSplitやNLEで使ったプリセットを流用したい方は書式の変更を行って下さい。
私が上の方で書いているようなそういう形式に書き換えてから使用して下さい。


ふぅ、疲れましたね。残りあと少しだけですよ。


特に加筆の必要も感じないのですが、ここでは2点のみ設定お願いします。
クッキー取得設定で放送用のアカウントでログインしたブラウザを選択、取得状態にユーザーIDが表示されているのを確認して下さい。
また右側FFMpegのところに、ffmpeg.exeと書いてあることを確認して下さい。
処理優先度は高を推奨します。FFMPEG実行画面も表示しないほうがいいと思います。

あと前述のなぜ480kbpsでいいのかということに対する答えなのですが、その他の項目にビットレートを自動的に制御するチェックが入っているので、自動でサービスタイムとゴールデンタイムで映像ビットレートを調整してくれるんです。
便利でしょ?
なのでいちいち数値書き換えなくてもいいのですよ。

さぁ設定は以上になります。最後にこちらの画像を見て下さい。


これはFFMPEG Launcherのログ画面です。上がFFMPEG Launcherのログで、下がffmpeg.exeのログになります。
エラーの原因を探す方法の一つなのですが、上はある程度日本語で書いてあるのでエラーの原因がわかりやすいかと思います。しかし、大抵下が動き始めている場合は、エラーの原因は下に表示されます。
エラーが起きたときはまずここを確認し、何が原因で止まったのかを確認して下さい。
そのあと高度な設定->拡張->手入力設定で実行するのチェックを入れ、現在のコマンドラインを読み込むことで、エラーの原因となった箇所を特定することが容易になることがあります。


さぁ長くなりましたが、今回は有料版XSplitを使用される方向けの設定を紹介いたしました。以前放送で高画質化の方法を紹介した際に、有料版XSplitを使わない人向けにSCFFというツールを紹介したと思いますが、FFsplitというソフトがこちらも無料でXSplitの機能の大半を代用することができるとわかったため、そちらを次回の更新で紹介したいと思います。


みなさんの配信が更に高画質になることを祈っています!


広告
×
解説お疲れ様です!TS共々参考にさせていただきます!
44ヶ月前
×
この記事のお陰で配信環境が大幅に改善でき、大変参考になりました!どうもありがとうございました!!
35ヶ月前
×
>>
【音声】
デバイス:XSplitBroadcaster コーデック:FDKAAC
チャンネル数:stereo
サンプリングレート:48000Hz ビットレート:48kbps
音量:256(default)
<<

音声ビットレートはビルドされているみたいなので
『24kbps』あれば十分音良くて、『32kbps』もあれば十分高音質だと思います(*゚∀゚)
その減らした分、映像に回せるのでより高画質に出来ますね
参考にしてみて下さい(*´∀`*)
34ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。