web-dev-qa-db-ja.com

RTMP対RTSP / RTP:インタラクティブなライブストリームにどちらを選択しますか?

インタラクティブなライブストリームアプリケーションを開発しようとしている場合、超低(リアルタイム)レイテンシに依存します。たとえば、ビデオ会議や遠隔研究室の場合。

この状況に適しているはずの2つのプロトコルは次のとおりです。

  • RTSP、RTPでデータを送信中
  • RTMP

* WebRTC:私はより多くの聴衆に互いに対話する可能性を与えようとしているので、WebRTCは適切ではありません。私の知る限り、それはより多くの聴衆のために設計されていないためです。

私の質問:

  1. このユースケースにはどちらを選択すればよいですか? RTSP/RTPまたはRTMP?

  2. エンドツーエンドのレイテンシ、セッションの起動時間に関するより良い結果をもたらすプロトコルはどれですか?

  3. どれがより多くのハードウェアリソースを消費しますか?

  4. RTMPは永続的なTCP接続を使用しているようです。しかし、どのプロトコルが送信に使用されますか?リアルタイム遅延を保証できないため、TCPにはできませんか?

  5. 一般に、どちらのプロトコルを使用する場合の長所と短所は何ですか?

科学論文や本では、これら2つのプロトコルの比較は見当たりませんでした。有名なモバイルライブストリーミングアプリであるPeriscopeがRTMPを使用していることのみ。

InstagramやFacebookのような他のアプリは、例えばストリーマーとのテキストベースの相互作用を提供しています。 開発者がインタラクティブなライブストリームに基づいて次の「キラーアプリケーション」を構築したい場合:この質問は答えに不可欠だと思います。

10
Joey

答えには多くの仮定があります。

WebRTC:私はより多くの聴衆に互いに対話する可能性を与えようとしているので、WebRTCは適切ではありません。私の知る限り、それはより多くの聴衆のために設計されていないからです。

それは単に真実ではありません。 WebRTCは、アプリケーションをサーバー側でどのように構成するかを知りません。 WebRTCを介した大規模なグループコールと低遅延のビデオ配信を処理するための既製のサービスがたくさんあります。

また、メディアストリームの場合、WebRTCは内部でRTPです。

TCPにはできません。これは、リアルタイムの遅延を保証できなかったからですか?

もちろんできます。 TCPにはオーバーヘッドがありますが、リアルタイムシナリオでの使用を妨げるものはありません。 TCP=のオーバーヘッドは最小限です。

信頼性は必要ないため、UDPは伝統的にこれらの種類のシナリオに使用されますが、それはTCPがほとんどパフォーマンスとして使用できないことを意味しません。

RTMP

RTMPはFlashのデッドプロトコルです。サポートしているブラウザはありません。他のクライアントは、レガシーの理由でのみサポートしています。今後の新しいことに使用すべきではありません。

有名なモバイルライブストリーミングアプリであるPeriscopeがRTMPを使用していることのみ。

まあ、それは何もする理由ではありません。

  1. エンドツーエンドのレイテンシ、セッションの起動時間に関して、どのプロトコルがより良い結果をもたらしますか?

WebRTC

  1. どれがより多くのハードウェアリソースを消費しますか?

それは正しい質問ではありません。アプリケーションの他のほとんどの部分のオーバーヘッドは、配布に使用されるプロトコルのトランスポートオーバーヘッドよりもはるかに大きくなります。

あなたが考える必要があるものの本当のリスト:

  • クライアントの互換性。どのようなクライアントをサポートする必要がありますか?
  • あなたは本当にどこでも低レイテンシが必要ですか?あなたはその要求に対して行っているトレードオフを理解していますか?ほんの一握りのユーザーだけがインタラクティブになる場合、すべてのユーザーのビデオ品質と信頼性の感覚を破壊しても構わないと思いますか?
  • 予算はいくらですか?流通のための既製のソリューションははるかに安価です。非対話型ユーザー向けにストリームをYouTubeにプッシュできる場合、かなりのお金を節約できます。既存のインフラストラクチャを使用できない場合は、多額の現金を使う準備をしてください。
  • 実際の遅延要件は何ですか?これらの遅延要件がクラッピアネットワークやモバイルデバイスで満たせない場合、アプリケーションを使用できる人数を減らす準備はできていますか?
  • あなたの品質要件は何ですか?
  • ビデオをさまざまなビットレートにどこでトランスコードしますか?
  • 視聴者に適応ビットレート表示が必要ですか?
  • ストリームを他のプラットフォームに同時にプッシュする必要がありますか?
  • オンデマンドで視聴したり、時間を遡ったりするためにストリーミングを記録する必要がありますか?

また、ここに私の投稿が役立つかもしれません: https://stackoverflow.com/a/37475943/362536

要するに、仮定を確認してください。トレードオフを理解します。包括的な一般化ではなく、実際の情報に基づいて決定を下します。

18
Brad