独自配信サーバでVRライブ配信のやり方(その1)
1. VRライブ動画が配信されるまで
VR動画をリアルタイムに配信する仕組についてまとめます。
撮影から視聴まで、以下のように動画データが転送されます。
VRカメラ → 配信用PC → 配信サーバ(CDN) → VR Viewerアプリ
配信サーバへのアップロードはRTMP、サーバからのダウンロードにはHLSプロトコルを利用するのが一般的です。RTMPは持続的接続を使い、HTTPと比較して低遅延の通信が可能です。HLSはhttpが使える端末であれば基本的に利用可能なため、PCやiOS、Androidで視聴できるなど汎用性が高くSSLで暗号化を行うことも可能です。
2. カメラ
配信したい動画の種類にあったカメラを用意します。今回は、iPhoneに直接接続できるVRカメラ(insta360 nano S)を使用します。VR カメラの設定方法については、次回説明します。
• iPhone X, 8, 8 Plus, 7, 7 Plus, 6s, 6s Plus, 6, 6 Plusに対応
• 4K・2000万画素対応の高画質360度カメラ
• 手軽に360度の全天球写真・動画の撮影が可能
• iPhone画面を確認しながらワンタッチで撮影
• 軽量コンパクトでカメラ単体での撮影にも対応
• 静止画 6272×3136、動画 3840×1920@30fpsに対応
• 複数のアングルの映像を1画面にまとめて表示することができるマルチビュー機能
• 撮影した360度動画をお好みの画角で2D動画に編集できるフリーキャプチャー機能
• iPhone内蔵のジャイロセンサーを利用した手ブレ補正機能に対応
• 最大60分間の連続撮影に対応
• 最大128GBのmicroSDカードに対応(別売)
• 専用アプリでFacebookやYouTubeなどのSNS投稿やライブ配信、360度動画チャットが可能
• ブラックとシルバーの2色をラインナップ
3. サーバ(CDN)
3.1 配信サーバの準備
Real Time Messaging Protocol (RTMP) を扱うために、オープンソースで公開されているnginx-rtmp-moduleを使います。
sudo su
yum update
yum groupinstall "Development Tools"
yum -y install pcre-devel zlib-devel openssl-devel
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.8.0.tar.gz
sudo wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip
# build
cd nginx-1.8.0
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make
make install
3.2 nginxの設定ファイルにrtmpの設定を追加
/usr/local/nginx/conf/nginx.confの一番最後に以下を追加
rtmp {
server {
listen 1935;
chunk_size 4096;
application pmg {
live on;
record off;
}
}
}
applicationで指定する名称がURLの一部になります。
上記の設定だとURLは、rtmp://<ip address>/pmg
設定ができたら、nginxを起動します。
/usr/local/nginx/sbin/nginx
この状態でブラウザからhttp://<ip address>/にアクセスして、Nginxの起動しているページが表示されればOKです。
4. 視聴端末
配信の準備はできたので、最後にプレイヤーを準備します。
video.js v4.2.0からrtmpに対応(beta)したので、こちらを使います。
jsファイルはCDNにホストされたものを使うので、プレイヤーと言っても以下の様なHTMLファイルを準備するだけです。
<!DOCTYPE html>
<html lang="en" class="">
<head>
<link href="http://vjs.zencdn.net/4.2.0/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/4.2.0/video.js"></script>
</head>
<body>
<video id="rtmp live test" class="video-js vjs-default-skin" controls
preload="auto" width="640" height="264" data-setup='{}'>
<source src="rtmp:// <ip address>/pmg/test" type='rtmp/mp4'>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser
that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
</p>
</video>
</body>
</html>
srcに指定したURLのtestは、先ほどVRカメラのストリームキーに設定した文字列を指定します。
このファイルをWebサーバなどどこかのサーバに置いて、ブラウザで開きます。
次回は、今回説明を省略したVRカメラの設定内容と、スマホのVR Viewerを用いた視聴方法について解説します。