RTMPの2021年以降の話 ~ Adobe Flash以外の動画配信での使われ方

Amazon CloudFrontのようにラストマイルでのRTMPの使用はAdobe Flashのサポート終了とあわせて勇退します。しかしファーストマイルでのRTMPの使用はまだ現役です。動画配信のRTMP使用場面とあわせて確認をしてみました。
2021.01.15

はじめに

清水です。以前、AWSのCDN (Content Delivery Network)サービスであるAmazon CloudFrontでRTMPディストリビューション機能が2020年12月31日に廃止されることをお伝えしました。

また実際に2021年になってからは、このCloudFrontのRTMPディストリビューションにアクセスできなくなっていること *1 を確認しました。

Adobe Flash Playerが2020年12月31日をもってサポートを終了したことに起因するCloudFrontのRTMPディストリビューション機能の廃止です。しかしプロトコルとしてのRTMPはまだ現役で、映像をストリーミングサーバなどに伝送する場面で活用されています。 *2 とはいえ、RTMPのプロトコル自体はAdobe Flashと関わりが強かったものです、サポート状況なども気になり調べてみたところ、ちょうどWowza (Wowza Media Systems) *3 の以下のブログ記事が見つかりました。

RTMPプロトコルの現在に即した説明、そしてどんな場面で使われていたRTMPが廃止され、どんな場面で使われているRTMPがこれからも残るのか、といった点がまとまっています。本エントリでは上記記事を参考にしながら、主にAWSでの動画配信構成において、どこで使われてたRTMPが廃止され、どこで使われているRTMPがこれからも活用されるのか、といったことをまとめみました。以下、本編はなかなかの長編となってしまいました、要点のまとめると以下となります。あくまでFlash Playerのサポート終了で再生側のRTMPのみが廃止される点に注意しましょう。

  • サーバから映像を受け取りWebブラウザなどで再生する部分で使われるRTMP利用は廃止される(Amazon CloudFrontもこちらに該当)
  • 映像をサーバに送る(打ち上げる)部分やサーバ間の連携で使用されるRTMP利用はまだ継続される

動画配信におけるファーストマイルとラストマイル

本題のRTMPの話題に入る前に、動画配信におけるファーストマイルとラストマイルという言葉を確認しておきましょう。LIVE動画配信のワークフロー概要図を以下に示します。なお、AWSのサービスアイコンについてはイメージとして動画配信に使われるものをとりあえずリストアップしています。参考として捉えてください。

LIVE動画配信ではまず、映像ソースをライブエンコーダやストリーミングソフトウェアなどを通して、インターネット上のストリーミングサーバやストリーミングサービスなどにアップロードする必要があります。この過程を「ファーストマイル」と表現します。「Ingest」という言葉を使ったり、映像を「打ち上げる」といった表現もされますね。なお映像自体は基本的にはじめ(ソース)の段階でインターネット上にありません、そのためインターネット上に「打ち上げる」かたちですが、この映像がある環境を「グラウンド」などとも表現するようです。(「クラウド」との対比として、と捉えています。)

続いてインターネット上のストリーミングサーバやストリーミングサービスで処理をしたあと、視聴者の持つ再生プレイヤーで映像を受信して視聴を行います。このインターネットから再生プレイヤーまでの過程を「ラストマイル」と表現します。「Egress」という言葉で表現されることもあります。

VOD動画配信でのワークフローもほぼ同様ですが、大きな違いのひとつとしては、ファーストマイルでは単純に映像をファイルにしたものをアップロードする、という点かと思います。(対してLIVE動画配信では映像を連続してアップロードし続ける、という必要があります。)

また一般に「配信」という言葉はラストマイル配信のことに使われる場面が多いのかな、と個人的には感じています。例えば「CloudFrontで配信する」などの場合にはラストマイルを示すことがほとんどですよね。対してファーストマイルについては、明示的に「打ち上げる」とか「Ingest」などと呼ばれる場面が多い印象です。

ただし「配信」という言葉についてはファーストマイル/ラストマイル双方で使われる場合があるので注意が必要です。文脈や場面によってどちらを示しているのか確認するようにしましょう。例えばストリーミングソフトウェアで代表的なもののひとつであるOSB Studioでは[配信開始]というボタンがあり、このボタンを押下することで映像の「打ち上げ」が開始されます。つまりファーストマイルの配信ですね。

ラストマイル(Egress)でのRTMPの使用

それでは本題となるRTMPの使用場面について確認していきます。まずはラストマイル、つまりインターネット上から実際の視聴デバイスへの伝送手段としてのRTMPの利用についてです。

ラストマイルについては、2021年の現在ではHLSやMPEG-DASHなどプロトコルとしてHTTPをベースにしたものを使うことがほとんどです。しかし、動画配信が広まっていったころ、2010年代前半ぐらいまでは、プロトコルとしてRTMPを使うことが多くありました。 *4 この背景としてAdobe Flashの技術があります。Webブラウザの拡張機能としてインストールされているFlash Playerを利用することで、容易に動画の再生・視聴が可能になりました。別途再生用のソフトウェアアプリケーションが不要であり、Webブラウザ内で完結できることも手軽さにつながったかと思います。Webで映像を視聴するといえば、Webページ上のFlash Playerで再生する、というほどFlashが全盛であったのではないでしょうか。Flash上ではFlash Media PlaybackやStrobe Media Playback、Open Source Media Framework (OSMF)などの動画再生プレイヤーが使われていました。

このように当時は、PC/Macそして一部のAndroidスマートフォンではWebブラウザ上のFlashにより動画再生が可能でした。しかしiPhone/iOSでFlashがサポートされないことなどから状況が変わり、ラストマイルにRTMPを使うことから、だんだんとHLSのようなHTTPを使うEgressの方法に切り替わっていったかと思います。これにはHTML5やJavaScript製の動画プレイヤーの存在なども大きかったかと思います。

また個人的に要因のひとつとして考えているのは、HLSなどHTTPベースの方式のCDNとの相性の良さです。RTMPの場合はCDNも専用の機能が必要で、それがCloudFrontのRTMPディストリビューション機能でした。ただしこのCloudFront RTMPディストリビューション機能についてはVOD動画配信のみサポート、LIVE動画配信は未サポートでした。動画配信が広く普及するにつれ、同時視聴者数の増加やコンテンツの高画質化などにより、より高スペックのサーバを複数スケールさせる必要が出てきます。RTMP方式でもオリジン-エッジ構成をと採ることでスケールさせることはできますが、サーバの管理の必要性も出てきますし、何よりサーバコストそしてストリーミングソフトウェアのライセンスコストも多く発生します。HTTP方式であれば、より安価なHTTPキャッシュサーバがそのまま利用できるので、より低コストにスケールさせることが可能だったのではないか、と考えています。

2010年代後半になるころにはRTMPによる動画再生はだいぶ下火になり、RTMP以外の方法による動画視聴が進んでいった認識です。特に顕著なのが2017年11月にリリースされたAWS Media Servicesの機能かと思います。当時、そのようなラストマイルでのRTMPがあまり使われなくなっていたことを反映してか、LIVE動画配信でのRTMPのサポートはありませんでした。VOD配信についてはAmazon CloudFrontのRTMPディストリビューション機能が利用できる状態ではありましたが、こちらも積極的に案内されることはなかったかと思います。

ということで、まとめるとWebブラウザでFlashが使われていたころにはラストマイルにRTMPを使った方式が一般的であったが、現在ではほとんどHTTPベースの方式になりRTMPを使った方式はほとんど使われていなかった、となります。そしてAdobe Flashのサポート終了に伴い、Amazon CloudFrontでもラストマイル向けRTMPの機能を廃止した、ということです。

ファーストマイル(Ingest)でのRTMPの使用

続いてファーストマイル、つまり映像をサーバに伝送する手段としてのRTMPの利用です。LIVE動画配信におけるファーストマイルでも、RTMPは活用されてきました。そしてこのファーストマイルに限っていえば、現状、サーバに伝送するフローでAdobe Flash自体は使われていない認識です。つまり、ラストマイルと異なりFlashのサポート終了の影響は受けず、引き続きRTMPの利用が可能である、と私は認識しています。実際、RTMPを入力プロトコルとして受け付けるストリーミングサーバやストリーミングサービスにおいて、RTMPの利用が停止された、もしくは停止されるという情報は確認する限りありませんでした。

AWSでの具体的な使用箇所についても確認していきましょう。ライブ動画処理サービスであるAWS Elemental MediaLiveでは入力を扱うInputリソースのtypeとしてRTMP (push)ならびにRTMP (pull)が選択できます。(個人的にはRTMP (push)を使うことが多いかと思います。YouTube Liveなど多くのストリーミングサービスと同じ感覚で映像を打ち上げることができます。)

またマネージド型ライブストリーミングソリューションであるAmazon Interactive Video Service (Amazon IVS)ではリソースであるChannelを作成するとIngest serverとしてRTMP (RTMPS)のURLが払い出されます。実際にライブ動画配信を行う際にはストリーミングソフトウェアなどからこのIngest serverのURL宛に映像を打ち上げます。

AWS Elemental MediaLiveではその多機能さゆえ、複数の入力方式の中からRTMPを選択することできる状況ですが、対してAmazon IVSについてはあくまでシンプルに利用できることに重点を置いていることもあり、現状ではRTMP (RTMPS)が唯一の入力方式となります。

このRTMPによる映像の打ち上げ、ファーストマイルでの利用ですが、ラストマイルでRTMPが盛んに使われていたころ(つまりAdobe Flashが全盛だったころ)に広く広まった印象を持っています。 *5 そのころ定番だったライブ動画配信を行うためのストリーミングサーバとしてはAdobeのFlash Medie Server (FMS)、のちのAdobe Media Server (AMS)ではないでしょうか。またライブエンコーダ/ストリーミングソフトウェアとしてもAdobeから無償で提供されていたAdobe Flash Media Live Encoder (FMLE)が広く使われていたかと思います。 *6 このFMLE、つまりストリーミングソフトウェアからストリーミングサーバであるFMSへの映像伝送プロトコルとして使われていたのがRTMPです。

ストリーミングサーバだけではなく、多くのストリーミングサービスでもRTMPが使われてきました。当時の話をすればUstream *7 などもそうでしたし、今でもYouTube LiveやFacebook Live、Twitchなどをはじめとした多くのストリーミングサービスでRTMPが利用可能です。そしてこれらについても、現時点ではFlashのサポート終了を受けてRTMPを廃止する、といった情報は私の確認する限りなく、引き続きIngestの方式としてRTMPが利用可能である認識です。

このように、ファーストマイルにおけるRTMPは対応機器や対応ソフトウェアが多く、広く広まっているという点で手軽であることなどから、これからも継続して使われていくかと思います。それではこのファーストマイルについて、これからもずっとRTMPが使われ続けていくのかというと、これはなんとも言えないのかなと考えています。先述のように、手軽さなどからRTMPがひとつめの選択肢となることは多いと思いますが、例えばWowzaの記事にあるようなSRT (Secure Reliable Transport)などがこれから広く使われるようになるかもしれません。

またこの点で興味深いのがYouTube Liveの入力フォーマットです。最近ではHLSやMPEG-DASHにも対応しているようです。 *8

YouTube Live Streaming Ingestion Protocol Comparison

遅延についてはRTMP (RTMPS)が良さそうですが、注目すべきはサポートしているコーデックです。Wowzaの記事にも記載がありましたが、RTMPについてはおそらく対応しているのはH.264/AVC、VP8の世代のコーデックまで、そこから先の世代となるH.265/HEVCやVP9、そしてHDRについてはRTMPが未対応かと思います。そのためこれらを使用したい場合についてはRTMP以外の方法を採る必要があり、そのためにYouTube LiveではHLSやMPEG-DASHをサポートしているのかな、と推測しています。

ということで、まとめるとファーストマイルについてはRTMPは引き続き利用は可能である、となります。しかし今後別の方式によるIngestに取って代わる可能性はありうる(ないとはいえない)のではないでしょうか。

サーバ間での伝送におけるRTMPの利用

ラストマイル、ファーストマイルそれぞれでのRTMPの利用について確認してきました。これらを言い換えると、映像をサーバに入力するのにはRTMPがまだ現役、サーバからの出力に使われるRTMPは廃止となる、とも言えるかもしれません。ただこの出力部分については、あくまで出力先がWebブラウザなどの再生デバイスであることに注意しましょう。サーバ間で映像を伝送、入出力するといった場合には、引き続きRTMPが使用されます。例えばAWSのライブ動画処理サービスであるAWS Elemental MediaLiveでは、出力のひとつとしてRTMP形式の指定が可能です。

詳細については以下エントリもご参照ください。

概要としては以下のようになります。RTMPでMediaLiveから出力を行い、他のストリーミングサーバ/ストリーミングサービスへのRTMPの入力としています。例えばAmazon IVSと連携させたり *9 、YouTube LiveやFacebook Live、TwitchなどRTMPを入力とするサービスと連携させたりすることが可能です。

なお、MediaLiveからの出力といえば代表的なものにAWS Elemental MediaPackageが挙げられるかと思います。AWSでのライブ構成の定番パターンのひとつですね。この構成の場合、MediaPackageはHLSでの入力のみ受け付けるため、MediaLiveからもHLSでの出力となります。これは2017年11月のMediaLive、MediaPackage(つまりAWS Media Services)のリリース当時に、MediaLiveのRTMP出力機能がなかったこともありますが、あえてHLSを選択したのか、という点も少し気になるところです。

なお、映像伝送自体でいえば、例えばAWSの映像伝送サービスであるAWS Elemental MediaConnectのようにRTPやZixi Protocolなどといったプロトコルを使うことも可能ですし、こちらのほうがより高品質、高信頼性で伝送が可能かと思います。上記のRTMPでの伝送の例についてはあくまでMediaLiveをハブとして他ストリーミングサービスと連携する、といった用途での利用に限定される認識です。IngestでRTMPが利用できるので、その連携のためにRTMP出力を備えている、と考えると良いでしょう。

ということで、こちらもまとめるとストリーミングサーバやストリーミングサービスの連携としてRTMPが利用されている、となります。

まとめ

RTMP: Real-Time Messaging Protocolの動画配信で使用される(使用されていた)場面を確認しつつ、どの場面での使用が廃止され、どの場面での使用は継続されるのかをまとめてみました。ラストマイルでのRTMPの使用はAdobe Flashのサポート終了とあわせて勇退しますが、ファーストマイルでのRTMPの使用はまだ現役です。またストリーミングサーバ、ストリーミングサービスを連携させるためにRTMPを使用する、という場面もあり、こちらも現役です。RTMPがAdobe Flashの技術として開発されたものの、RTMP自体はまだ残るというのは興味深いですね。RTMPについては元々Macromediaが開発しており *10 、その後プロトコルの仕様自体は公開されたことから、このような状況になっているのではないかと思います。RTMP自体に脆弱性などが発見された場合はどうなるのか *11 、という点は気になるのところではありますが、ひとまずは「RTMPイコールサポート終了で使用できない」と一緒くたで捉えるのではなく、利用する場面を確認して適切に使用しましょう。

おまけ: HDS(HTTP Dynamic Streaming)について

Adobe Flashのサポートが終了しても、RTMPのプロトコル自体はファーストマイルでまだ活用される、という話でした。しかしAdobe Flashのサポート終了に伴い、個人的におそらくほとんど使われなくなるだろう動画配信技術がひとつ思い浮かびました。HTTP Dynamic Streaming (HDS)です。

こちらは私の確認する限り、サポート終了などの情報はなかったかと思いますが、再生クライアントのほとんどがAdobe Flashを用いたもの(これはRTMPと同様ですね)であることから、今後は使われなくなるだろうな、と思っています。HDSについてものすごく雑に言えば、「HLSのAdobe版」でしょうか。RTMPと異なり、HTTPを使った方式であることが特徴です。PCのWebブラウザでHLSの再生が未サポートだったときに、HDSであればPCのWebブラウザ上のFlashで再生可能であり、使用されていました。HTTPでしたので、多くのCDNが利用できたのも特徴だったかと思います。Amazon CloudFrontでもHTTPディストリビューションでの連携が可能でした。HLSをCupertino Streamingと呼び、HDSをSan Jose Streamingと呼んでいたころが懐かしいですね。(クパチーノはApple社の拠点があるアメリカの都市、サンノゼはAdobe社の拠点があるアメリカの都市で、Wowza Streaming Engine *12 のドキュメントにはこの記載があったと記憶しています。)

脚注

  1. 厳密には、私の観測する範囲ではアクセスできなくなっていることを確認しました。
  2. そしてこれからも数年は活用が続くと思います。
  3. Wowza Streaming Engineなどストリーミングサーバソフトウェアの開発を行っている会社。Live Video Streaming Platform | Wowza Media Systems
  4. そのほかにはMMS: Microsoft Media Serverなどもありましたね。
  5. それ以前だとRTPなどでしょうか。実はRTMP以前のファーストマイルの伝送方式にはあまり詳しくなく、気がついたらRTMPを使っていた、という世代です。
  6. もちろん、各社からより高機能なライブエンコーダ/ストリーミングソフトウェア製品も出ていました。
  7. 現在はIBS Cloud Videoに移行しているそうです。
  8. 私は最近、このことに気がつきました。
  9. MediaLive側でアーカイブをS3に保存、視聴者へのラストマイルの配信はAmazon IVSを使う構成です。
  10. のちにAdobeに買収されます。
  11. ストリーミングサービスなどで引き続きプロトコルを使用しているベンダーなどが対応するのかな、と期待はしています。
  12. Wowza Media Server時代かもしれません。