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