HTTPによる配信が普及して安定しつつある中、やはり低遅延は需要があるらしい
現状、低遅延するにはどうすればいいのかという核心からついていこうと思いますが
・WebRTCを使ってみる
・CMAF対応のエンコーダーあるいは配信サービスを使用する
とりあえず現実解として、上記2パターンが考えられますが、それぞれ考察していきたいと思います
WebRTCを使ってみる
WebRTCは以前にも記事にした気がしますが、超低遅延による配信を可能とする技術です
ざっくり言えば、テレビ会議やSkypeのビデオ通話を配信に応用したものと理解してください
メリット:とにかく超低遅延。フレームレベルの遅延なので、会話も成立する
デメリット:WebRTCに対する知識不足。画質や音質で残念な事になりがち。負荷分散の仕組みがまだ整っていないので大規模向けには使えない。ファイアウォールで弾かれるかも。WebRTC対応の機材およびサービスが必要になる。検証が大変。RTMP以上のバッファリングの可能性
WebRTCはUDPを使って通信をするので、映像データの破綻が起こりがちです。Wowzaを使えばTCPで行えるので、多少は解消出来ると思いますが、負荷分散の仕組みが全然出揃っていないので、大規模向けに配信する事は簡単に構築するには難しいでしょう(出来ない事は無いけど)
P2Pとかと絡めれば大規模向けも可能でしょうが、正直かなりチャレンジングな内容だと思います
ただし、成立すればこれ以上ない低遅延が可能となります
お金が流動的に動くような内容の時にはWebRTCは重宝するかもしれませんね(デスマーチの未来しか見えないけど)
CMAF対応のエンコーダーや配信サービスを使う
たぶん、こっちの方がより現実的。以前にYouTubeの低遅延配信でもCMAFについては触れましたが(https://engineer-world.duckdns.org/2017/09/14/post-1120/)
早速、直近でAWS(Elemental)がCMAFについてのセミナーをしたようなので、少しは認知度が広まったと思います
CMAFに対応してるエンコーダーを買うという選択肢もありますが、ElementalやらHarmonicやらの名前が目立つので、おそらくまた数百万円を投資する話になると思います。
なので、既に高価なエンコーダーを持ってる場合は、私は配信サービスを使う事をおススメします(別にエンコーダーを買うな、ソフトウェアアップデートを買うなとは言ってませんよ?)
なお、CMAFの詳細については上記URL先よりご参照ください
簡単に低遅延配信を始めるなら、WowzaのStreaming Cloudが低遅延の配信に対応出来るようなのでとりあえずこれが手軽、かつ安全だと思う
How to deliver a reduced-latency HLS stream in Wowza Streaming Cloud
メリット:最小で2秒という低遅延が可能。HTTPを使うので、ファイアウォールとか気にしないでいい
デメリット:CMAFに対する知識不足。CMAF対応のサービスもしくは機材の調達が必要。およびCMAFの検証による工数の発生。通常のHTTP配信よりもバッファリング増加の可能性
WebRTCと比較するとCMAFのデメリットはかなり緩い、あるいはどうにかなりそうな範囲に留まっていると思います
自前でCMAF環境作るよりは、Wowzaのサービス使うか、
最悪YouTube Liveの超低遅延を使えばいい
というが私の現在の結論です
人間が実際に動く工数で発生する見えないコストにどこまで目を向けられるか?という事になりそうですが