はいどうも、たんちぇるです。

今回は複数サイト配信と2PC配信について書きます。が、

OBS単体で複数サイト配信できますよ という解説ではありません

複数のツールを使います。

この記事に書いてある事をうまく応用すれば、1PCで複数サイト配信も可能です。
また、複数サイトには配信せず、ただ2PCで高画質低ビットレートな配信をすることも可能です。

少々パソコンの知識がないと分からないような内容ですのでご注意ください。


今回やりたいこと・目的
  • OBSを使って複数サイト配信したい
  • ゲーム用PC,配信用エンコPCを分けたい
この2点です。

必要な物とか
  • ゲーム用PC
  • エンコ用PC
  • 上二つがネットワークにつながっていること

参考にさせてもらったサイト様
NginxでRTMP同時配信
乳ろぐ OBSで複数サイト同時配信
Directives · arut_nginx-rtmp-module Wiki

今回は
メインPCからOBSで出力→サブPCでffmpegを使って再エンコ→twitch,youtubeへ出力
って感じでやります。
PCは2つともwin系を例にやります。

複数サイト同時配信だけーとか、再エンコだけーやりたい人はうまく調整してください。


それでは始めましょう。

イメージ図はこんな感じ
pic01

エンコードの部分だけみると
pic02
こんな感じになります

配信先が2つありますが、エンコードを2回行わず、1回だけエンコを行い、それを2か所に配信します。

pic03
もちろんニコニコ動画用とtwitch用などの2種類のエンコードをして配信することも可能ですが、その分負荷が大きくなりますので注意です。

「なかなか始まらねぇじゃねぇか!!!」
ごめんなさい文章書くの苦手なのです


まずはPC②(エンコ用PC)の準備から始めます。


――――――――――――PC②(エンコ用PC)の準備ここから――――――――――――

こちら からrtmpモジュール組み込み済みのnginxをダウンロードします。
configとかも全部ダウンロードしてくださいね。
ダウンロードしたものをCドラ直下など、任意の場所に移動させてください。日本語フォルダ内に入らないようにしてくださいね。

次に、こちら から、Nginx Launcherをダウンロードしましょう。ダウンロードしたものはnginx.exeと同じ場所に移動させてください。(どなたが作られたものなのか分かりませんが有り難く使わせていただきます感謝感謝)

nginxの設定ファイルを編集します。nginx.exeと同じ場所にあるconfフォルダ内nginx.confファイルをメモ帳でもなんでもいいので開いてください。

中にいろいろ書いてありますが全部消して以下を書きます


worker_processes 1;

error_log logs/error.log warn;

events {
        worker_connections 1024;
}

rtmp {
        server {
                listen 1935;

                ping 30s;
                ping_timeout 10s;
                drop_idle_publisher 15s;

                application src {
                        live on;
                        meta copy;
                        wait_video on;

                        allow publish 127.0.0.1;
                        allow publish 192.168.0.0/16;
                        deny publish all;
                        allow play 127.0.0.1;
                        allow play 192.168.0.0/16;
                        deny play all;
                }
        }
}

これでnginxをrtmpサーバとして使う準備ができました。
あとはNginxLauncher.exeをダブルクリックすればnginxが起動しますので、やっておきましょう。



次にffmpegを使うための準備をします。

まずはffmpeg.exeをダウンロードしてきます。公式で配布されているものでも、自分でビルドしたものでも構いません。(ちなみに私はSada_maruさんが製作されたビルドツールを使用し、ffmpeg modified v2をビルドして、それを使わせてもらっています。感謝感謝)

公式からダウンロードする方法を一応書いておきます。わかりずらいので。
まずはこちら
ここをクリック
5970b204-bbc8-49fb-9f82-042cb75a4b07

以上です。64bitのパソコンでも32bitでいいかなーと思います。ご自由に。


準備したffmpeg.exeを任意のフォルダに移動させます。(さきほどのnginx.exeと同じフォルダに置けば分かりやすいかな?)


次に、ffmpegを起動するためのbatファイルを作成します。
ファイル名はffmpeg_run.batとかでいいんじゃないですかね。batファイルの中には以下のように記述します。


"ffmpeg.exeのパス" -re -i rtmp://localhost/src -threads 8 -r 60 -s 1280x720 -b:v 2300k -maxrate 2500k -bufsize 5000k -vcodec libx264 -preset veryfast -sws_flags lanczos -pix_fmt yuv420p -profile:v main -acodec copy -f flv pipe: | "ffmpeg.exeのパス" -loglevel panic -i - -codec copy -f flv "rtmp://配信先①" -codec copy -f flv "rtmp://配信先②" 

pause

これはほんの一例です。ffmpegのオプションとかx264のオプションは自分で探してみてください。
自分が実際に使用しているbatファイルの中身を書きますと、


"C:\msys\home\cy\bin\ffmpeg-3.1.1-modified-v2\ffmpeg.exe" -re -i rtmp://localhost/src -threads 8 -r 60 -s 1280x720 -b:v 2300k -maxrate 2500k -bufsize 5000k -vcodec libx264 -preset veryfast -sws_flags lanczos -pix_fmt yuv420p -profile:v main -x264opts "me=hex:ref=6:bframes=3:trellis=2:keyint=60: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" -acodec copy -f flv pipe: | "C:\msys\home\cy\bin\ffmpeg-3.1.1-modified-v2\ffmpeg.exe" -loglevel panic -i - -codec copy -f flv "rtmp://live-tyo.twitch.tv/app/live_みせられないよ!" -codec copy -f flv "rtmp://a.rtmp.youtube.com/live2/みせられないよ!" 

pause

今回はtwitchとyoutubeに出力してますが、同時にローカルにmp4で保存みたいなこともできます。
ffmpegとx264のオプションについては後日解説を作ろうかと考えていたりいなかったり。


PC②の準備は以上になります。ここまでできればあとは簡単です。


――――――――――――PC②(エンコ用PC)の準備ここまで――――――――――――


それではPC①(ゲーム用PC)の準備をはじめましょう。


――――――――――――PC①(ゲーム用PC)の準備ここから――――――――――――

OBSをインストールします。OBS classic, OBS Studioの2種類がありますがどちらを使ってもらっても構いません。私は「スタジオモード」があるOBS Studioを使っています。

しいて言うなら、XSplitでもFFSplitでも、FFMpegLauncherでも構いません。配信ソフトを準備してください。


ストリーミング設定で、
ストリームURLを rtmp://PC②のローカルIPアドレス/src
ストリームキーを 空欄
にしてください。 

 PC②のローカルIPアドレスは各自で調べてくださいね。

例:
ストリームURL rtmp://192.168.3.7/src

ビットレートは高めに設定しましょう。自分は20000 kbpsにしています。

キーフレームは2秒でいいかなーと。
プリセットはveryfast プロファイルはmainに設定します。

重要:負荷を抑えるために、x264のプリセットは空欄にします。
参考:x264のオプションについて
pic04
実はこんな感じになってます。
つまり、ビットレートを高く設定し、x264オプションを指定しなければ、低負荷で高画質な配信ができるのです。


OBSのシーンとか音声とかは各自で設定してくださいね。

以上でPC①(ゲーム用PC)の準備の説明を終わります。


――――――――――――PC①(ゲーム用PC)の準備ここまで――――――――――――



準備完了です。


それでは、実際に配信する際の手順を説明します。


まずはPC①、PC②を起動します。

PC②のnginxを起動します。(NginxLauncherダブクリ)
PC②のffmpeg_run.batをダブルクリックします。

PC①のOBSの配信を開始します。

指定したrtmpサーバーに配信されるはずです。


以上で説明は終了です。お疲れ様でした。




質問ある方はコメントしてもらえれば対応するかもしれません。





――――――――――――――――――――――――――――――――――――
追記 2016/07/18

nginx.confの中身に exec ffmpeg -i (ry を記述すればわざわざbatファイルを作らなくてもいいじゃないか、と指摘を受けそうですが、なぜかwindowsのせいなのか、execがうまく動かなかったんです。
原因とか分かる方いらっしゃったらコメントしていただけると幸いです。

――――――――――――――――――――――――――――――――――――