RTMP ストリーミング: The Real-Time Messaging Protocol について解説します [ Wowza Blog 翻訳 ]

RTMP ストリーミング: The Real-Time Messaging Protocol について解説します [ Wowza Blog 翻訳 ]

原文: "RTMP Streaming: The Real-Time Messaging Protocol Explained"(2020 年 7 月投稿分)

 

ストリーミング初期の頃、RTMP(Real-Time Messaging Protocol: リアルタイム・メッセージング・プロトコル)は、インターネット上でビデオを転送するためのストリーミングプロトコルとして、所謂デファクトスタンダード(業界標準)でした。RTMP は TCP ベースのプロトコルで、低遅延の接続を維持するように設計されています。

このプロトコルは、Adobe Flash Player を使用したライブやオンデマンドストリーミングを支えるシークレットソースとして始まりました。当時、人気だったFlash プラグインは、全盛期ではインターネットブラウザの 98% に搭載していたため、RTMP は広く使用されていました。

大半のエンコーダは RTMP を送信することができ、ほとんどのメディアサーバーは RTMP を受信することができます。また Facebook や YouTube、Twitch、Periscope などの大手ソーシャルメディアのプレイヤーでも受けられます。しかし、RTMP ストリームは、一般的なブラウザやデバイスで再生する際に互換性の問題に直面します。

この記事では、RTMP 仕様、RTMP ストリーミングの背後にある歴史、そして使用可能な代替プロトコルについて説明します。

RTMPとは?

RTMP は、専用のストリーミングサーバーと Adobe Flash Player との間で、ビデオとオーディオ、その他のデータを伝送するために設計されたストリーミングプロトコルです。かつては独自の仕様でしたが、現在 RTMP はオープンな仕様となっています。

Adobe 社によると:

「Adobe の RTMP は、TCP [RFC0793] などの信頼性の高いストリームトランスポートを介して、双方向メッセージの多重化サービスを提供します。これは、ビデオ、オーディオ、およびデータメッセージの並列ストリームを、関連するタイミング情報とともに、通信ピアのペア間で伝送することを目的としています。」

RTMP ストリーミング 概要:

  • オーディオコーデック: AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex
  • ビデオコーデック: H.264、VP8、VP6、Sorenson Spark®、スクリーンビデオ v1 & v2
  • 再生互換性: 広くサポートされていない
    • Flash Player、Adobe AIR、RTMP 対応のプレイヤーに限る
    • iOS、Android、ほとんどのブラウザおよび埋め込み可能なプレイヤーで受け入れられなくなった
  • メリット: 低遅延で最小限のバッファリング
  • デメリット: 視聴体験の品質やスケーラビリティが最適化されていない
  • 遅延: 5 秒
  • 関連フォーマット: RTMPT (HTTP 経由でトンネリング)、RTMPE (暗号化)、RTMPTE (トンネリングと暗号化)、RTMPS (SSL 経由で暗号化)、RTMFP (TCP の代わりに UDP 経由でレイヤー化)

どのように RTMP ストリーミングは動作するのか?

Macromedia(現在の Adobe Systems 社)は、ビデオとオーディオデータの高性能伝送のための RTMP を開発しました。RTMP は、視聴クライアントとサーバー間の常時接続を維持し、プロトコルがパイプのように動作します。そして、ビデオデータを視聴者へ迅速にデリバリーすることを可能にします。

RTMP は Transmission Control Protocol(TCP)で使われるため、データを転送する際にはスリーウェイ・ハンドシェイク(Three-way handshaking)を使用します。イニシエータ(クライアント)がアクセプタ(サーバー)に接続を開始するように要求し、アクセプタが応答します。その後、イニシエータが応答を確認し、両端間のセッションを維持します。このような理由から、RTMP は非常に信頼性が高いです。

RTMP ストリーミングの歴史

Flash Player と RTMP は、2010 年代初頭までライブストリーミングの配信方法として主流でした。これらの技術を併用すると、約 5 秒の遅延時間で超高速の動画配信をサポートします。しかし、HTML5 ビデオストリーミングやオープンスタンダード、およびアダプティブビットレート配信が、最終的にラストマイルデリバリー(Last-mile delivery)に於いて RTMP ストリーミングを追い抜きました。

 

 

1) ラストマイル(ラストワンマイル):通信業者の収容局からエンドユーザーの建物までを接続する通信回線のこと。通信回線をすべての家庭まで引き込むという事業目的から、「残りの1マイル」という意味で使われるようになった言葉(デジタル用語辞典より)

なぜでしょうか?RTMP は正常に動作したのですが、ファイアウォールを通過する際に問題が発生していました。また、ステートフルプロトコルである RTMP には専用のストリーミングサーバーが必要でした。Adobe は「Flash の終了」を発表しました - 2020 年の予定。

現在、業界では昔ながらの Web サーバーを使用する HTTP(ハイパーテキスト・トランスファー・プロトコル)ベースのプロトコルを支持しています。これは、ローカルサーバーがストリーミングコンテンツをキャッシュできるようにすることで、スケーラビリティと視聴体験が向上します。この動きにより、アダプティブ・ビットレート・ストリーミングがより一般的になり、放送局は視聴者のデバイスや接続性に合わせてコンテンツを最適化できるようになりました。

Adobe が RTMP を公開したのは 2012 年で、2020 年は Adobe が Flash Player のアップデートを配布する最後の年となりました。そのため、Flash(そして RTMP)をサポートしているデバイスは以前よりも少なくなっています。Adobe は、「既存の Flash コンテンツを新しいオープンフォーマットに移行すること」 を推奨しています。

では、RTMP も無くなるのか?

Flash のサポート終了日は過ぎています。しかし、RTMP について同じことは言えません。RTMP エンコーダは、多くのコンテンツ制作者のために、今もなお使い続けられており、Wowza Media Systems の Video Streaming Latency Report によると、33% が RTMP エンコーダを使用していると回答しています。

質問: どのストリーミングフォーマットを現在利用していますか?

多くの放送局では、RTMP を使用してライブストリームをメディアサーバーに転送し、それをトランスコードして様々なプレーヤーやデバイスに配信する方法を選択しています。つまり、ラストマイルデリバリーを除いて、RTMP ストリーミングは健在しており、コンテンツの投稿に適しています。

典型的な RTMP ライブストリームのワークフロー

コンテンツ配信で、キャプチャから再生までに使われるストリーミングプロトコルが 1 つだけとは限りません。実際、ライブストリームをできるだけ多くのプロトコルに再パッケージ化することで、幅広い配信が可能になります。

最近の HTML5 プレイヤーは、HLS などの HTTP ベースのプロトコルを必要とするため、メディアサーバーまたはストリーミングサービスを使用して RTMP ストリームを取り込み、再生に適した代替手段にトランスコードすることができます。RTMP ストリームが IP カメラ、モバイルアプリ、またはブロードキャストグレードのエンコーダから来ているかどうかにかかわらず、Wowza のライブストリーミングプラットフォームは、変換と配信プロセスをシームレスにします。

 

 

StackPath の Robert Gibb 氏は次のように述べています:

「RTMP をライブストリーミングに活用したい場合、メディアサーバーは絶対に必要です。例えば、Wowza Streaming Engine は、どのサーバーにもインストールできるライブまたはオンデマンドビデオ用のストリーミングソフトとして広く使われています。」

RTMP ストリームの設定方法

インターネット経由で RTMP ストリームを配信するには、RTMP 対応のカメラまたはエンコーダから始める必要があります。IP カメラやソフトウェアエンコーダ、またはハードウェアエンコーダを使用することができます。無料の OBS ソフトウェアまたは Wowza ClearCaster プライアンスがお奨めです。

RTMP ストリームのソースエンコーダを決めたら、次はビデオのトランスコードと配信用のソフトウェアまたはサービスを決める必要があります。Wowza Media Systems はすぐに使用できるソリューションとして Wowza Streaming Cloud サービスや、追加のカスタマイズを必要とする人のために Wowza Streaming Engine ソフトウェアを提供しています。RTMP エンコーダを Wowza のビデオプラットフォームに接続する方法については、以下のリソースを参照してください:

RTMP エンコーダを Wowzaプ ラットフォームに接続したら、あとは配信に使用するフォーマットを決めます。

RTMP を置き換える際の検討事項

ワークフローに最適なプロトコルは、用途によって異なります。Wowza のブログでは、各プロトコルの長所と短所をチェックすることができます。しかし、まずは、以下の検討事項に基づいてオプションを比較することをお勧めします:

  • スケーラビリティ
  • 遅延時間
  • エクスペリエンスの品質(適応ビットレートの有効化など)
  • 使用(ファーストマイル・コントリビューション vs ラストマイルデリバリー)
  • 再生サポート
  • プロプライエタリ vs オープンソース
  • コーデック要件

RTMP ライブストリームをアダプティブ HLS DASH フォーマットにトランスコードすることは、依然として一般的に行われています。とはいえ、WebRTC 500 ms 以下の遅延を必要とする人にはより適しています。

配信向けの RTMP 代替案

ラストマイルデリバリーでは、Apple の HTTP ライブストリーミング(HLS)と MPEG-DASH が多くを占めています。HLS は現在のライブストリーミングで最も一般的なプロトコルで、Video Streaming Latency Report では回答者の 45% 以上が採用しています。MPEG-DASH は、HLS に代わるオープンソースのプロトコルであり、業界標準となっています。

HTTP ベースのプロトコルは、過去に RTMP よりもはるかに多くの遅延を注入することで話題になりましたが、最近は改善できると予想されています。低遅延  CMAF for DASH と低遅延 HLS は、大規模な低遅延ストリーミングをサポートすることが期待されています。

RTMP に代わる超低遅延(Ultra-low-latency)代替案としては WebRTC です。WebRTC フレームワークは、ユーザーがブラウザを介して 500 ms 以下の遅延で直接通信できるようにします。

Streaming Media 誌の 2020 年 1 月 / 2 月号では、Robert Reinhard 氏がこのように解説しています「低遅延のリアルタイムストリーミングに Flash を使用している場合、WebRTC ソリューションへの移行を試みるには、約 1 年弱の期間を要します。具体的にはどういうことでしょうか? Flash ベースのメディアサーバー(Adobe Media Systems、Wowza Streaming Engine など)で使用しているすべてのコードを、リアルタイムメッセージングプロトコル(RTMP)の代わりにWebRTC に移行する必要があるのです。」

低遅延ストリーミングに関しては WebRTC が勝利を収めていますが、制限がないわけではありません。この技術は、1 対多数のブロードキャスト用に設計されていないため、大規模な展開にはカスタマイズが必要になります。

インジェスト向けの RTMP 代替案

ファーストマイル・コントリビューションには RTMP がまだ一般的ですが、それさえも時間の経過とともに変化する可能性があります。業界のリーダーたちは、SRT(Secure Reliable Transport)のようなオープンソースプロトコルが標準になる可能性もあると予測しています。

Deloitte によると:

「10 年以上前に開発されたリアルタイムメッセージングプロトコル(RTMP)などのレガシープロトコルは、ビデオをエンコードし、ネットワークを介してクライアントに転送するために開発されましたが、SRT などの新しいソリューションに置き換わる可能性が高く、遅延をさらに減少させ、ライブおよびオンデマンドストリーミングの需要を満たすように設計されています。」

SRT とは? Wowza は、ライブビデオを配信する際の遅延を最小限に抑えるための継続的な取り組みの一環として、2017 年に Haivision 社と SRT アライアンスを共同設立しました。このプロトコルは、最適化されていないネットワーク上での動画投稿や配信の課題を解決するのに役立ちます。

WebRTC は、シンプルなブラウザベースのパブリッシングを必要とするワークフローでも人気のあるインジェストプロトコルです。RTMP エンコーダを WebRTC ベースのビデオソースに置き換えることで、追加の機器が不要になります。これにより、Web ブラウザだけでシームレスにライブストリームをブロードキャストすることが容易になります。

RTMP ワークフローのテスト

Wowza 社はワークフローを試すために、MPEG DASH、HLS、RTMP、HDS などをサポートするテストプレイヤーを提供しています。「Adobe RTMP」タブには Adobe Flash Player のインストールが必要です。これは、ブラウザ内のネイティブサポートがもはや一般的ではなく、Flash 自体もまもなくサポートされなくなるからです。

つまり、RTMP ストリームにはトランスコードが必要不可欠です。そして、Wowza でストリーミングすることで、マルチデバイス配信に最適なフォーマットを使用することができます。