リアルタイムライブ配信のプロトコル

 作ってみたいものがあり、ライブ配信を実現するためのプロトコルについて調べた。種類はわりとあったが、選択肢になりそうなものになると以下に絞られた。

・HLS(HTTP Live Streaming)

・RTMP(Real Time Messaging Protocol)

・MPEG-DASH

・WebRTC

 各詳細は個々に調べてほしいが、選択の基準となるのは「どのくらいの遅延を許容するか」「双方向か一方向か」「配信の対象となる人数」だ。

 RTMPは遅延が少なく、多人数に配信できるなど非常に便利ではあるがflashのサポートが2020年で切れるのに伴って使用は現実的ではなくなる。iOSなどにも使用できるHLSは大規模な配信にも対応しているが、遅延がかなり大きいらしい(標準で十数秒、チューニングしても2,3秒の遅延)。CDNも使用できるので配信サイト向きではあるが、双方向の通話などが要件に入ると遅延の問題から選択肢に入りにくくなる。WebRTCは遅延が少なく、双方向の通話に向いているが、基本がp2pであるため、大規模な配信には向いていない(配信サーバーを多数用意するなどすれば解決できるらしいが、素人に真似できそうにはない)。MPEG-DASHはHLSと特徴は似ているが、遅延はHLSより少ないようだ。

 今回私が作りたいと思っているものは双方向通話が要件になるため、WebRTCが有力な候補になる。大規模な配信もできればしたいが、実現の難易度が高そうなのでとりあえずは少人数の配信から実装し、プロトタイプが出来て以降多人数配信を実現できるか検討してみようと思う。

この記事が気に入ったらサポートをしてみませんか?