RTMPの完全ガイド:RTMPとは何か、いつ使うべきか?
RTMP(Real-time Message Protocol)は、広く使われているストリーミングフォーマットです。長年にわたり、放送局、ネットワーク事業者、その他多くの業界にとって不可欠なツールに成長しました。しかし、RTMPに関するいくつかの誤解が、RTMPの普及を遅らせています。
しかし、RTMPとはいったい何なのでしょうか?それはどのように機能するのでしょうか?そして、あなたの次のライブストリームにそれを使用する必要がありますか?
以下、その詳細をご覧ください。
RTMPとは?
RTMPは、TCP(Transmission Control Protocol)技術をベースにしたインターネット上のメディアコンテンツのストリーミングに用いられるネットワークプロトコルまたはシステムである。
TCPは、インターネットプロトコルスイートを構成するコンポーネントの1つです。他の重要なコンポーネントは、IPとも呼ばれるインターネット・プロトコルです。
RTMPは、インターネット上でメディアコンテンツをストリーミングするために使用されるネットワークプロトコルまたはシステムです。
TCP と IP は共に、アプリケーション層とネットワーク層の間の通信の橋渡しをする役割を果たします。アプリケーション層は、Mozilla Firefox ブラウザやその他のユーザーアプリケーションのように、ユーザーが通常操作するものを包含しています。
Firefox ブラウザが Web ページを読み込むには、Web サイトのサーバにリクエストを送信する必要があります。リクエストを受信すると、サーバーは要求されたリソース(ビデオストリーム、YouTubeの録画済みビデオ、またはウェブページのHtmlコードなど)を送信します。
効果的な通信を維持する(通信が途切れたり遅れたりしないようにする)には、メッセージをパケットと呼ばれる小さな断片に分解する必要があります。これは送信者側で行われ、メッセージが受信されると、ユーザーのために再び組み立てられる。
TCPは、メッセージをパケットまたは効果的かつ効率的に送信できる小さな断片に分割することを処理するコンポーネントです。
IP層は、インターネット上でパケットを伝送するための最適な経路を決定する転送エージェントとして機能する。
RTMPプロトコルは、Adobe Flash Player、VLC Media Player、QuickTime Player、Windows Media Playerなど、多くの一般的なメディアプレーヤーで使用されています。RTMPは、Google ChromeやMozilla Firefoxなど、一部のウェブブラウザでもサポートされています。
ストリーミング・ソリューションの最大の関心事は、コンテンツをどのように配信するかということです。ストリーミングの解像度品質が低ければ、ほとんどの消費者にとって、それは破格のものでしょう。同様に、遅延が大きく、コンテンツを再生するまでのバッファやロードが長すぎるストリーミング・ソリューションも、うまくいきません。
ここで RTMP が輝きを放ちます。RTMPはその開発以来、低遅延、最小限のバッファリング、そしてネットワーク接続が強力で十分速い場合には最高のストリーミング解像度品質を保証してきました。
RTMPのもう一つの利点は、大量のストリーミングを同時に、しかも大きな問題なくサポートできることです。
しかし、RTMPは長年存在していたにもかかわらず、最近になって、そのシステムがユーザーにとって安全でないとして、監視の目が厳しくなっています。
ここでは、セキュリティ上の脆弱性(s)がどのように発生するかについて説明します。
第一に、RTMPプロトコルは暗号化を内蔵していません。そのため、RTMPを使用した通信やパケット転送は、不正なグループや中間者攻撃によって盗聴される可能性があります。
RTMPのセキュリティ上の脆弱性をもたらしたもう一つの要因は、そのソースコードが長い間プロプライエタリであったことである。プロプライエタリなソフトウェア(所有権や管理権が開発・購入した事業者に限定されているソフトウェア)は、通常、定期的に出てくるセキュリティパッチを受けますが、それだけでは十分ではありません。
新しい脆弱性は頻繁に発生し、オープンソースソフトウェアを中心としたコミュニティは、比較的頻繁に、より良いセキュリティパッチを保証しています。これは、RTMPがセキュリティ姿勢を強化するために逃したものです。
RTMPのバリエーション
RTMPのバリエーションは以下の通りです。
- RTMPS(Real-TimeMessaging Protocol Server) - RTMPとよく似ていますが、暗号化、すなわちSSL(Secure Sockets Layer)とTLS(Transport Layer Security)が有効で、Flash Playerが有効なすべてのプレーヤーがサポートされています。これは、転送中のデータの改ざんや不正アクセスを防ぐことが不可欠なシナリオで使用されます。
- 暗号化リアルタイムメッセージングプロトコル (RTMPE)- これは、データ伝送にTCP(Transport Control Protocol)とUDP(User Datagram Protocol)の両方を利用する、非常に多目的なストリーミングプロトコルです。また、RTMPEは、不正なアクセスや改ざんを避けるために、アドビ独自の暗号化を使用してすべてのデータ転送を暗号化します。
- Real-Time Messaging Protocol Tunnel (RTMPT)- RTMPTは、通常すべてのRTMPトラフィックをブロックする ファイアウォールをバイパスするためにトンネリングメカニズムを採用しています。実際には、RTMPTはクライアントが修正したHTTPリクエストをサーバーに送信し、サーバーがほぼ同様のHTTP送信で応答することを必要とします。クライアントとサーバーはセッションIDを使用し、接続が確立されると、両者間でデータ転送を開始することができます。
- RTMFP(Real-TimeMedia Flow Protocol)- RTMFPは、RTMPのステップアップ版で、高性能なメディアストリーミングを実現するために、異なるエンコーディングフォーマットUDPを採用しているのが特徴です。
RTMPストリーミングの歴史
RTMP(Real-Time Messaging Protocol)は、当初、Macromediaが開発したFlashプレーヤーとサーバー間のインターネット上でのオーディオ、ビデオ、データのストリーミング用の独自プロトコルであったが、現在では、Flashプレーヤーとサーバー間のオーディオ、ビデオ、データのストリーミング用のプロトコルとして利用されている。
RTMPは現在、Facebook、Twitch、Twitterなど、数多くの人気オンラインサービスでライブビデオストリーミングに使用されています。
RTMPの最初のパブリックリリースは2002年でした。2009年、AdobeはOpenRTMPとして知られるRTMPのオープン仕様バージョンをリリースしました。RTMPとOpenRTMPの主な違いは、OpenRTMPでは、Flash Media Server(FMS)だけでなく、任意のメディアサーバーを使用できることです。
また、オープンなRTMP仕様では、開発者がpeer-to-peer機能をどのように保護し、設定するかについて、より柔軟な対応が可能になっています。これは、理想的なRTMPソリューションを開発するために、開発者間の競争とオープンアクセスを通じて、イノベーションとコラボレーションを促進することを意図しています。
大原則
RTMPは、 コンテンツを配信するために「ストリーミング」と呼ばれる技術を使用します。 このため、ユーザーはコンテンツのダウンロードを待つことなく、コンテンツを見たり聞いたりすることができる。
RTMPの運用方法には2つの部分があります。ファーストマイルとラストマイルの配送です。
ファーストマイル配信は、一般的にRTMPを使用してエンコーダーからサーバーにメディアを送信することである。ラスト・マイル・デリバリーとは、サーバーからユーザーのデバイスにメディアを送信することです。この部分には、Flashプレーヤーや同等の機能を持つツールが使用されます。Adobe社がFlashのサポートを打ち切るとの情報もあり、ラストワンマイル配信は終了となる。
これに対し、業界ではより効率的なストリーミングソリューションであるHTTP(Hypertext Transfer Protocol)が採用されました。
RTMPTのようなRTMPのバリエーションは、現在、メディアのカプセル化と伝送にHTTPを採用しています。
RTMPインジェストの仕組み
これは、RTMPがここまで長く続いてきた救いの一つでしょう。世界が コンピュータでのメディア視聴からモバイルでの視聴に 移行する中、RTMPはある課題に直面しました。
RTMPは、Adobe Flash Playerに依存することでシームレスなストリーミングを実現していましたが、ちょっとした問題がありました。モバイル機器ではAdobe Flash Playerをサポートしていないため、同じストリーミングサービスをモバイル機器でも利用したいユーザーにとって、RTMPは無用の長物になってしまったのだ。
その答えとして、Appleはモバイル機器でのストリーミング機能をサポートするためにHLSプロトコルを開発しました。
RTMPが時代遅れになることを予想するのは妥当なことでした。幸いなことに、RTMPはRTMPインジェストとともに生き続け、エンコーダからサーバにメディアを転送する理想的なプロトコルとしてニッチを築きました。
RTMPインジェストは、低価格のエンコーダーを優先的に機能させ、一般に低遅延のストリーミングをユーザーに提供します。
これには大きく分けて3つの要素があります。
1. 握手
クライアントがRTMPサーバに接続しようとするとき、最初にハンドシェイクを確立する必要があります。このプロセスは、クライアントがサーバに「接続」リクエストを送ることから始まります。このリクエストには、クライアントに関する情報と、行おうとしている接続の種類が含まれています。
そして、サーバーは、サーバーに関する情報と確立された接続の種類を含む「connected」メッセージで応答する。
最後に、クライアントとサーバは、両者がまだ接続していることを確認し、接続に必要なパラメータを交渉するためにメッセージを交換します。
2. 接続について
RTMPインジェスト接続の主な目的は、メディアコンテンツをソースからデスティネーションにストリーミングする手段を提供することである。
メディアソースは、ライブカメラ映像、録画済みビデオ、オーディオ、またはその他のメディアです。配信先は通常、ストリーミングメディアサーバーで、コンテンツを視聴者に配信します。
RTMPインジェスト接続には、3つの要素があります。
- エンコーダーは、映像・音声信号をインターネット上で転送可能なデジタルフォーマットに変換する。
- トランスポート。エンコーダーからサーバーへ、エンコードされた信号を送る媒体です。通常、UDPまたはTCPで行われます。
- サーバーはエンコードされた信号を受信し、視聴者に提供する(通常はFlashなどの形式にパッケージ化する)。
3. ストリーミング
ユーザーがメディアサーバーにコンテンツをストリーミングする場合、サーバーは接続されているすべてのクライアントに送信する前に、受信したビデオとオーディオフィードを最初にエンコードする必要があります。
ビデオやオーディオをエンコードし、標準的なファイル形式に再フォーマットするプロセスをトランスコードと呼びます。入力信号を様々なデバイスで再生できる形に変換する作業です。
ストリーミングには、ライブとオンデマンドの2種類があります。ライブストリーミングは、リアルタイムで放送することを指し、オンデマンドストリーミングは、ユーザーが便利にコンテンツを視聴できることを指します。
ライブストリーミングはクライアントとサーバーの間に常時接続が必要ですが、オンデマンドストリーミングはその必要がありません。
RTMPはTCPを使用してクライアントとサーバー間の持続的な接続を維持するため、低遅延のストリーミングが可能です。しかし、RTMPはオンデマンドストリーミングにはあまり向いていません。
インジェストのためのRTMPの代替
SRTとWebRTCは、RTMPの機能に匹敵する、あるいはそれを上回る主要な候補である。ここでは、この2つの選択肢について簡単に紹介します。
セキュアリライアブルトランスポート(SRT)
SRTは、ユーザーが比較的信頼性の低いネットワークに接続している場合でも、低遅延のストリーミングを維持するなど、RTMPが管理できなかった部分を補うことができます。このため、ライブストリーミングとオンデマンドストリーミングの両方に最適な選択肢となります。
オープンソースのため、機能の限界は無限であり、開発サポートが打ち切られる心配もありません。
ウェブ・リアルタイム・コミュニケーション(WebRTC)
ブラウザベースの公開でWebRTCの勝ち。WebRTC HTTP Ingest Protocol(WHIP)も開発中で、これがユーザーにとって意味するのは、RTMPのようにエンコーダーに煩わされることなく、Webブラウザだけでストリーミングできるようになることだ。
RTMPの出口に関する代替案
RTMP egressの代替品としては、HTTP Live Streaming (HLS)、MPEG-DASH、WebRTCが上位に挙げられています。
ここでは、その代案を簡単にご紹介します。
HLSとMPEG-DASH
この2つは、HLSがプロプライエタリであるのに対して、MPEG-DASHはオープンソースであるという点だけで、実質的に同じです。
この2つの最も優れた点は、低遅延で最適なメディア品質を提供し、信頼性の低いネットワーク接続でも動作するように設計されていることです。
また、 WebRTCはRTMPのイグレスソリューションの代替としても注目されています。
RTMPとFlashは滅びるのか?
短い答えは、「おそらくない」です。長い答えは、もう少し複雑です。
HTML5の人気が着実に上昇し、Flashの有能な代替ツールが普及していることから、RTMPとFlashは滅びつつあるように思われるかもしれません。しかし、そうではありません。
Flashはここ数年、HTML5に大きくシェアを奪われ、衰退の一途をたどっており、かつての映像の世界での優位な立場は、今や常に脅かされている状態です。
それでも、ウェブ上での存在感は大きく、YouTubeやFacebookなど、多くの人気サイトで利用されています。
RTMPに関しては、オーディオやビデオコンテンツのストリーミングに今でも広く使われている。しかし、その将来はFlashほど確実ではありません。
Adobeは2020年にRTMPのサポートを終了すると発表しており、このプロトコルは終焉を迎える可能性があります。とはいえ、RTMPをベースにした代替手段はたくさんあるので、今後も何らかの形で使われ続けるでしょう。
では、RTMPを使ってストリーミングするべきか?
それは人それぞれです。RTMPを使用するメリットとデメリットをご覧ください。
長所
- 非常に安定しています。市場の他の代替品と比較して、RTMP対応サービスの使用中に中断やダウンタイムが発生する可能性は極めて低いと言えます。
- 低レイテンシーと最小のバッファリング。RTMPはこの点でユニークです。つまり、ユーザーはより良い解像度でビデオを見ることができ、メディアの読み込みにかかる時間もかなり短くなります。
- 互換性。RTMPSの堅牢性と信頼性により、より多くのメーカーがRTMPとの統合を容易にする設計を行うようになった。
短所
- RTMPはクライアントとサーバー間の持続的な接続を必要とするため、ネットワークが中断された場合に問題が発生する可能性がある
- プロプライエタリなソフトウェアであるため、パワーユーザーに対する柔軟性はほとんどない。
よくある質問
Wave.videoをRTMPでストリーミングするにはどうしたらいいですか?
RTMPで動画を配信する場合、Wave.videoが便利です。ここでは、 その使い方を紹介します。
- Wave.videoのアカウントを作成し、まだログインしていない場合は、ログインしてください。
- ストリーミングしたいビデオを選択します。
- Wave.videoの "Destinations "ページに移動し、"Custom RTMP "をクリックします。
- 次に、ストリーミングしようとしているコンテンツのサーバーURLとストリームキーを見つける必要があります。これを行うには、表示したいストリームがあるウェブサイトに移動します。
- 方法がわからない場合は、サードパーティ製のアプリや拡張機能を使って、URLとキーを抽出することができます。
- サーバーのURLとストリームキーをコピーします。
- サーバーのURLとストリームキーをWave.videoに貼り付けます。
- ストリームの作成またはスケジュールを設定します。
- ライブスタジオを開き、ストリーミングを開始します。
以上、手軽で簡単!
RTMPに対応したエンコーダは?
RTMPをサポートするエンコーダーのハードウェアやソフトウェアは数多く存在します。その一部を紹介します。
- Adobe Media Encoder
- OBSスタジオ
- エレメンタルサーバー
- TriCaster
- ワイヤキャスト
- ブイミックス
- テラデク
- Wowzaストリーミングエンジン
- ナイアガラ・ビデオ
RTMP vs. RTSP - どっちがいい?
RTMPとRTSPは、インターネット上でオーディオ、ビデオ、データをストリーミングするためのプロトコルです。両者は多くの点で似ていますが、いくつかの重要な違いがあるため、状況や好みに応じて最適な使い分けができます。
ここでは、両者の主な違いについて簡単に説明します。
- RTMPはライブストリーミングに、RTSPはオンデマンドストリーミングに適しています。
- RTMPはより低遅延で、RTSPはより高品質な映像を提供することができます。
- RTMPはFlash Media Serverが必要ですが、RTSPはどのようなメディアサーバーでも動作します。
では、どのプロトコルが良いのでしょうか?それは、あなたの具体的なニーズ次第なのです。
RTMPは、低遅延が必要で、Flashを使っても構わない場合に適した選択です。RTSPは、高品質のビデオが必要な場合や、Flash以外のメディアサーバーを使用したい場合に最適かもしれません。
アクションメッセージフォーマット(AMF)とは何ですか?
AMFは、インターネット上でデータを符号化して伝送するためのバイナリフォーマットで、RTMPと組み合わせて使用されることが多い。
AMFは、ActionScriptオブジェクトなど、RTMPと互換性のないデータの送信を可能にします。また、Flashアプリケーションとサーバー間のデータ交換を効率的に行うことができます。
RTMP URLとは何か、FacebookやYouTubeから取得する方法は?
RTMP URLは、ライブビデオコンテンツを様々なプラットフォームへ配信するために使用される一意の識別子です。
通常、IPアドレス、ドメイン名、ポート番号が含まれる。
YouTubeやFacebookから取得するには、いずれかのプラットフォームでライブストリーミングイベントを作成する必要があります。これが完了すると、イベントの設定にRTMP URLが表示されます。
最終的な感想
RTMPは間違いなく世界にその名を轟かせました。しかし、このまま消えていくのでしょうか?イグレスソリューションとしては可能かもしれませんが、インジェストソリューションとしては全く可能性がありません。
今後、同等以上の機能を持つ代替手段が登場しても、RTMPはメディア伝送やストリーミングの分野では重要な存在であり続けるでしょう。