誰でも使えるライブ配信プラットファームとして、YoutubeやFacebookがありますが8Kには対応していません。8Kでライブ配信できるカメラがあっても、気軽に使える8K対応の配信サーバーは少ない状況です。
気軽に使える8K対応の配信サーバーを作ってみましょう。ほぼ無料で誰でも?気軽に?使えるH265対応8Kライブストリーミング配信サーバー(RTMP/HLS)を構築して、8Kライブ配信を試してみます。
広告:リアルタイム8K3D(7680×3840@30fps)VR180ライブ配信カメラ「Kandao VR Cam(カンダオ ブイアール カム)」の発売及び、導入サービスを提供
https://jouer.co.jp/news/8k3d-vr180live-kandao-vr-cam/
ライブ配信をするために必要な配信サーバーは、2パターンあります。どこかの配信サービスを利用するか、自分で配信サーバーを構築するかです。
1.配信サービスを利用する(主にクラウド)
2.配信サーバーを構築(オンプレ or クラウド)
8Kライブストリーミング配信サービスを調べると、いくつか配信サービスが見つかります。企業向けだったり、気軽に使えるものは少ないです。Wowza、Vimeo、AWS Elemental MediaLive etc etc..などもありますが、4Kライブ配信ついては詳しく説明があるものの、8Kについては、明確に書かれていなかったりします(H265に対応していれば原理的には動くはずですけれど・・・)。
SRS(Simple Realtime Server)配信サーバーを構築
ということで、自分で配信サーバーを構築してみます。構築はクラウドで行います。オンプレミス(物理的にサーバーをつくってネットワークにつなげる)でも作れますが、誰でも?気軽に使えるコンセプトから、今回はAWSでクラウドに構築したいと思います。
配信サーバーを構築するとき、よく使われるのnginx+nginx-rtmp-moduleです。nginxの読み方はエンジン(ンジンエックスにみえますが。。エンジン)です。nginx-rtmp-moduleは、正式にH265をサポートしていないため8Kのライブ配信で利用するには、さまざまな工夫が必要になります。今回は使いません。
H265をサポートするSRS(Simple Realtime Server)を使います。どのようなシステムか説明を引用します。
SRS(Simple Realtime Server)とは
https://ossrs.io/lts/en-us/docs/v5/doc/introduction#whos-using-srsSRSはオープンソース (MITライセンス)、シンプルで、高効率のリアルタイムビデオサーバであり、RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH、GB28181をサポートしています。SRSメディアサーバは、FFmpeg、OBS、VLC、WebRTCなどのクライアントと連携し、典型的なパブリッシュ(プッシュ)およびサブスクライブ(再生)のサーバモデルでストリームを受信および配信する能力を提供します。SRSは、RTMPやSRTをHLS、HTTP-FLV、WebRTCに変換するなど、広く使われているインターネットオーディオとビデオのプロトコル変換をサポートしています。
というオープンソースです。たぶん開発元は中国のエンジニアの方々なのかなと思います。Ubuntu 20+の使用が推奨されていますので、Ubuntu 20で構築します。ソースからの構築よりdockerが推奨されているようです。dockerを利用できる詳しい方は直接「Getting Started」を見て構築ください。
https://ossrs.io/lts/en-us/docs/v5/category/getting-started
AWSのEC2をセットアップ
AWSのEC2を使います。テストなので20.04LTSで、t2.mediumあたりで作ります。
1時間の利用で0.0608USDドルです。1時間10円ぐらいでしょうか。データの通信料もかかるとしてもお手軽です。好みに応じてインスタンスタイプをお選びください。
AWSが初めての人は、さまざまな記事でEC2の使い方が紹介されていますので、登録方法から、リージョン、キーペア、ネットワーク設定など適宜しらべて起動させてください。自分で調べて慣れておく必要があります。
インスタンスが起動したらまずは、セキュリティグループを設定します。必要最小限の設定を行います。今回はTCPにてポート22、1985、8080、1935を使います。こんな感じで設定しました。セキュリティ等は考慮していない、ざっくりとしたテスト用の設定です。
インスタンスのセキュリティグループを適用させて完了です。
手軽にEC2のWebブラウザーからインスタンスに接続してターミナルを開きます。
SRSパッケージとツールをインストール
リポジトリを更新してSRSパッケージとツールをインストールします。上手くゆかない場合は、&&で繋げているものを区切って個別に実行してみてください。インストール後にh265オプションを指定してビルドします。
sudo apt update && sudo apt install -y build-essential libssl-dev unzip tclsh cmake pkg-config autoconf automake && git clone -b develop https://github.com/ossrs/srs.git
cd srs/trunk && ./configure --h265=on && make
次にsrs.confを作ります。※srs/trunk内にsrs.confを作っています。必要のない設定も含まれているかもです。深く理解できておりません。
sudo nano srs.conf
listen 1935; max_connections 1000; srs_log_tank file; srs_log_file ./objs/srs.log; http_api { enabled on; listen 1985; crossdomain on; } http_server { enabled on; listen 8080; dir ./objs/nginx/html; } stats { network 0; disk sda sdb xvda xvdb; } vhost __defaultVhost__ { hls { enabled on; hls_path ./objs/nginx/html; hls_fragment 5; hls_window 30; } http_remux { enabled off; } }
以上にて、./objs/srs -c srs.confでSRSが動作します。毎回起動がめんどくさいので、自動起動するように設定します。
systemdのサービスとして毎回自動起動
.shファイルを作って、systemdのサービスとして毎回自動起動するように設定します。AWSのubuntuユーザー名はubuntuですので、もしユーザー名が異なる場合は適宜変更してください。nanoはエディターです。vimが好きな人はvimをつかってください。
sudo nano /usr/local/bin/start_srs.sh
#!/bin/bash
cd /home/ubuntu/srs/trunk
./objs/srs -c srs.conf
実行権限も設定しておきます。
sudo chmod +x /usr/local/bin/start_srs.sh
次にsystemdのサービスとして登録します。
sudo nano /etc/systemd/system/srs.service
[Unit]
Description=Start SRS service
After=network.target
[Service]
Type=forking
User=ubuntu
Group=ubuntu
ExecStart=/usr/local/bin/start_srs.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
起動時の開始を有効にします。
sudo systemctl enable srs.service
システムをリブートして正しく起動するか確認します。
sudo reboot
sudo systemctl status srs
問題なく起動していれば準備完了です。これでサーバーを起動すると自動的にSRSサーバーが起動します。以上でセットアップ完了です。ほぼ無料で誰でも?気軽に?使えるH265対応8Kライブストリーミング配信サーバー(RTMP/HLS)を構築できました。
試しに7680×3840@30fpsにて、H265の20Mbpsで配信テストをしてみます。rtmpのURLは以下になります。app部分がストリームキーです。必要に応じて入力を分けてください。xxx.xxx.xxx.xxxは利用しているAWSのインスタンスのIPアドレスに置き換えてください。8K配信ができるkandao Steamを使っています。
rtmp://xxx.xxx.xxx.xxx:1935/live/app
受信側のhlsがこちらです。対応している再生ソフトなどでライブ配信URLを受信してみてください。Podplayerを使っています。H265@7680×3840@30fpsにてしっかり受信できました。
http://xxx.xxx.xxx.xxx:8080/live/app.m3u8
ちなみに本記事作成にあたりサーバー稼働時間が12時間でEBS(SSD)が4.3GBでした。合計で1.28$の請求です。
注意
テスト用の配信サーバーなので、一般的なセキュリティーはもちろんHTTPSやRTMPの安全性も考慮していません。実際にサービスとして利用する場合には、慎重に検討が必要です。オープンソースであるSRSが信頼足るものか、配信サーバとして安定しているかご自身でご確認ください。
ジュエ株式会社では、さまざまなVRライブ配信システム(ソフト、ハード、サーバーシステム)を提供しています。お気軽にご相談ください。
広告:リアルタイム8K3D(7680×3840@30fps)VR180ライブ配信カメラ「Kandao VR Cam(カンダオ ブイアール カム)」の発売及び、導入サービスを提供
https://jouer.co.jp/news/8k3d-vr180live-kandao-vr-cam/