Amazon EC2 でストリーミングサーバー設定

amazonのAWSというサーバーPCが借りられるサービスを利用してshoutcast、icecast2、MediaMTXをインストールして配信に使える状態までにする備忘録です。

ec2は起動時間で課金されるから起動させっぱなしだと、すごい金額請求されるから注意です。
定額で500円/月程度のlightsailというサービスもあります(ホームページは常時稼働させておかないとだから私はホームページの方はlightsailのサービスを利用してます)
今回ec2を利用したのは配信時だけ起動するようにすれば、月に数回配信しても数百円で済みそうだからです)
どうしてAmazonで借りてるかというと、回線や借りられるPCのスペックが良くて配信が切れないからです)
ec2でインスタンス(私はubuntuを選択)を作成して、sshで接続できたところからの説明になります。

☆shoutcastからインストールする

shoutcastとicecastは初期設定だと同じポート番号を使用するようです。
ですので、先にshoutcastをインストールしてポートを変えてからicecastをインストールするのが簡単かなぁと思いました。

☆shoutcast用ユーザーの作成

shoutcastのインストールでは、専用のユーザーを作成しないと起動に失敗するみたいですので

sudo adduser <任意の名前>

で、ユーザーを作ります。
作ったら、作成したユーザーに

su <任意の名前>

で、ユーザーを切り替えてください。

☆shoutcastのインストール

cd /home/<任意の名前>

で、作成したユーザーのホームディレクトリに移動し、

wget http://download.nullsoft.com/shoutcast/tools/sc_serv2_linux_x64-latest.tar.gz

で、プログラムをダウンロードします。
続いて、

tar xfz sc_serv2_linux_x64-latest.tar.gz

として、ファイルを解凍します。
その次は

nano sc_serv.conf

としてnanoエディターで sc_serv.conf の中身を以下のようにタイプして保存終了します。

NOTE: for any relative paths specified are relative to
; sc_serv and not to where the conf file is being stored

; here we will setup where the log and other related files
; will be stored. make sure that these folders exist else
; sc_serv will throw an error and will close itself down.
; we will make the logs save to the sc_serv2 directory
logfile=logs/sc_serv.log
w3clog=logs/sc_w3c.log
banfile=control/sc_serv.ban
ripfile=control/sc_serv.rip

; the following will force any sources to be public which
; allows us to then connect and be listed on the YP
publicserver=always

; password used by sc_trans or the Winamp DSP plug-in
; NOTE: remember to change this to something else
password=YourPassword
; password used for accessing the administation pages
; NOTE: remember to change this to something else
adminpassword=YourAdminPassword

portbase=8000
requirestreamconfigs=1
streamid_1=1
streampath_1=http://your_address:8000

「your_address」のところはそのサーバーのドメインやパブリックIPアドレスにするそうです。
YourPasswordや、YourAdminPasswordは好きなパスワードにしてください。
そこまでが終わったら

./sc_serv &

として起動し、AmazonEC2のダッシュボードからネットワークの設定に入って行き、8000番と8001番ポートを開けてブラウザからアクセスし、起動を確認しましょう。

☆icecastのインストール

こちらはaptが使えるから簡単です。

sudo apt install icecast2

でインストールしましょう。
インストールを始めると画面が変わり、icecastの設定をしますか?と聞かれるのでNoを選択します。
インストールが終わると、etc フォルダに icecast2 ができてますので、/etc/icecast2/icecast.xmlを編集します。

sudo nano /etc/icecast2/icecast.xml

内容で以下の部分を見つけて、

<listen-socket>
  <port>8000</port>
    <!-- <bind-address>127.0.0.1</bind-address> -->
    <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</listen-socket>

8000のところをshoutcastと被らない番号にしてください。
続いて以下の部分も探して、

<authentication>
    <!-- Sources log in with username \'source\' -->
    <source-password>12345678</source-password>
    <!-- Relays log in with username \'relay\' -->
    <relay-password>12345</relay-password>
    
    <!-- Admin logs in with the username given below -->
    <admin-user>admin</admin-user>
    <admin-password>admin123</admin-password>
</authentication>

source-passwordには配信時にサーバーに接続するためのパスワード、
relay-passwordはよくわかんないけど別のサーバーに音をリレーさせる機能なのかな?わたしは使わないから適当にしました。
admin-passwordには管理用パスワードを記載して保存しエディターを終了します。
起動するには以下を実行してください。

sudo systemctl start icecast2

PC起動時にicecastを起動したい場合は以下を

sudo systemctl enable icecast2

実際に起動して、設定したポート番号をブラウザから開いて確認してくださいね。

☆MediaMTXサーバー

続いて、VRChatでTopazPlayerやiwaSyncのオブジェクトから0.5秒くらいの低遅延でワールド配信できるサーバーをインストールします。
RTSPポート(TCP554,UDP8000,UDP8001)とRTMPポート(TCP1935)をAmazonEC2のダッシュボードからネットワークの設定に入って行き、開けておきます。

ffmpegが必要なのでインストールします。

sudo apt update && sudo apt install ffmpeg

次にMediaMTXをダウンロードします。

wget https://github.com/bluenviron/mediamtx/releases/download/v1.15.5/mediamtx_v1.15.5_linux_amd64.tar.gz

で、mediamtxのファイルをダウンロードし、

tar -xvzf mediamtx_v1.15.5_linux_amd64.tar.gz

で、解凍します。
次に、解凍した場所/mediamtx/mediamtx.ymlを開き、以下の行を探して修正します。

#overridePublisher: yes
 overridePublisher: no
#rtspAddress: :8554
 rtspAddress: :554

にして保存します。そして以下の順でターミナルにコマンドを打ち込んでください。

sudo su
mv 解凍した場所/mediamtx /usr/local/bin/mediamtx
mv 解凍した場所/mediamtx.yml /usr/local/etc/mediamtx.yml
touch /etc/systemd/system/mediamtx.service
nano /etc/systemd/system/mediamtx.service

mediamtx.service の中身を以下のように編集して保存します。

[Unit]
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mediamtx /usr/local/etc/mediamtx.yml
[Install]
WantedBy=multi-user.target


/usr/local/bin/mediamtxのファイルにはパーミッション755等の実行権限を付与しておいてください。
あとはサービス起動するだけです。

sudo systemctl start mediamtx

起動時に自動的に開始したい場合は

sudo systemctl enable mediamtx

配信はOBSから


streamkey は適当に入力してもOKだそうです。(VRC側と合わせてね)
VRChatのTopazPlayerやiwaSyncでは

rtspt://IPADDRESS/STREAMKEY

で、ワールド内に配信できます。

コメント

タイトルとURLをコピーしました