2013/10/02

nginx-rtmp-module を使用した Twitch.tv と Ustream の同時配信環境構築

Twitch で配信するとカクつく人が出るようなので、Ustream でも同時配信がしたくていろいろ調べてみた結果、nginx の nginx-rtmp-module を使用すればいいことがわかったのでメモ。

元ネタはhttps://obsproject.com/forum/viewtopic.php?f=18&t=2651

まずは nginx のインストール。

$ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
$ wget http://nginx.org/download/nginx-1.5.6.tar.gz
$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
$ tar –zxvf nginx-1.5.6.tar.gz
$ unzip master.zip
$ cd nginx-1.5.6
$ ./configure \
  --prefix=/etc/nginx \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --http-log-path=/var/log/nginx/access.log \
  --error-log-path=/var/log/nginx/error.log \
  --lock-path=/var/lock/nginx.lock \
  --pid-path=/var/run/nginx.pid \ 
  --with-http_ssl_module \ 
  --with-ipv6 \
  --add-module=../nginx-rtmp-module-master
$ make
$ sudo make install

つぎに起動用のスクリプトを http://wiki.nginx.org/Nginx-init-ubuntu から拾ってきて、/etc/init.d/nginx に置いて chmod +x する。

起動用スクリプト内にある DAEMON=/usr/local/sbin/nginxDAEMON=/usr/sbin/nginx に、NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"NGINX_CONF_FILE="/etc/nginx/nginx.conf" にそれぞれ書き換えて保存し、

$ /usr/sbin/update-rc.d -f nginx defaults

を実行してスタートアップに登録する。

つぎに ffmpeg のインストール。avconv では Input/Output error が発生して Ustream に送信できないような感じだったので、ffmpeg 推奨。

$ sudo add-apt-repository ppa:jon-severinsson/ffmpeg
$ sudo apt-get update
$ sudo apt-get install ffmpeg

add-apt-repository が見つからないって言われたときは、sudo apt-get install software-properties-common を試してみるといいかも。

そして、nginx の設定ファイル(/etc/nginx/nginx.conf)に以下の設定を追記

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            record off;
            # twitch は push でも問題なく動作する
            push rtmp://live-lax.twitch.tv/app/your_stream_key_here;
            # ustream は push では上手く動作しないので ffmpeg を間にはさむ
            exec ffmpeg -re -i rtmp://localhost/live/$name -c copy -f flv "rtmp://x.xxxxxxxx.fme.ustream.tv/ustreamVideo/xxxxxxxx/your_stream_key_hereq flashver=FME/3.0\20(compatible;\20FMSc/1.0)";
        }
    }
}

最後に、

$ sudo service nginx start

で nginx を起動してサーバー側の設定は完了。

あとは OBS から、設定したサーバーにストリーミングするように設定すれば同時配信ができてるはず。

 

追記:

このままだとUst側の配信が非常に不安定になったため、TCPRelay v0.1.1 beta (配布元: http://strikerx3.blogspot.jp/2012/06/tcprelay-011-beta.html)を使用して配信を安定させた。

tcprelay.jar を /usr/local/bin に放り込み、

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        exec java -jar /usr/local/bin/tcprelay.jar -p:1396 -th:x.xxxxxxxx.fme.ustream.tv;
        application live {
            live on;
            record off;
            # twitch は push でも問題なく動作する
            push rtmp://live-lax.twitch.tv/app/your_stream_key_here;
            # ustream は push では上手く動作しないので ffmpeg を間にはさむ
            exec ffmpeg -re -i rtmp://localhost/live/$name -c copy -f flv "rtmp://localhost:1396/ustreamVideo/xxxxxxxx/your_stream_key_hereq flashver=FME/3.0\20(compatible;\20FMSc/1.0)";
        }
    }
}

と設定を書き換えたらいい感じになった。

0 件のコメント:

コメントを投稿