web-dev-qa-db-ja.com

WebRTCを使用して、サーバーからクライアントにビデオをストリーミングできますか?

WebRTCでは、ピアツーピアに関する実装と、あるクライアントから別のクライアントへのビデオストリーミングの取得方法を常に確認しています。サーバーからクライアントはどうですか?

WebRTCがサーバーからクライアントへビデオファイルをストリーミングすることは可能ですか? (WebRTC Native C++ APIを使用して、chromeまたはfirefoxブラウザークライアントアプリケーション)の現在の実装に接続する独自のサーバーアプリケーションを作成することを考えています。)

可能であれば、現在の多くのビデオストリーミングサービスよりも高速ですか?

49
A-letubby

はい、サーバーはそのピアツーピアセッションのピアの1つである可能性があります。プロトコルを尊重し、VP8を使用してSRTPパケットでビデオを送信すると、ブラウザーで再生されます。他のアプリケーションまたはサーバーでこれらのコンポーネントを構築するために、ガイドとして this ページおよび this プロジェクトを確認できます。

次に、WebRTCと他のストリーミングサービスを比較します...コーデックやプロトコルなどのいくつかの変数に依存します。しかし、たとえば、WebRTC(VP8コーデックを使用したSRTP over UDP)とFlash(H264コーデックを使用したTCP上のRTMP)を比較すると、WebRTCが勝っていると言えます。

  • プレーヤーは、ネイティブ<video>タグに対するFlash Playerになります。
  • トランスポートは、UDPに対してTCPになります。

しかし、もちろん、すべてはクライアントに送信するものに依存します。

41
nakib

ネイティブのWebRTC APIを使用していくつかのアプリとプラグインを作成しましたが、まだ多くの情報はありませんが、ここから始めるのに役立つリソースをいくつか紹介します。

QTの例: http://research.edm.uhasselt.be/jori/qtwebrtc
ネイティブからブラウザの例: http://sourcey.com/webrtc-native-to-browser-video-streaming-example/

8
Kamo

WebRTC Native C++ to Browser Video Streaming Example で始めましたが、実際の WebRTC Native Code でビルドすることはできません。

次に、変更をスタンドアロンプ​​ロセスにマージしました。

  • peerConnectionの管理(peerconnection_server
  • video4Linuxキャプチャ(peerconnection_client)。

ブラウザーからWebRTC Native C++クライアントへのストリームを削除すると、GitHub webrtc-streamer から利用可能なVideo4LinuxデバイスにWebRTCブラウザーにアクセスするための簡単なソリューションが得られます。

ライブデモ

3
mpromonet

サーバーソフトウェアのMJPEGをWebrtcに置き換えようとしており、Openwebrtcプロジェクトに関連付けられたコンポーネントの一部を使用してこれを行うためのプロトタイプモジュールを用意しています。これは絶対に負担であり、ICEネゴシエーションエラーが頻繁に発生します(単純なLAN上でも)が、ほとんどの場合は機能します。

また、Google Webrtcモジュールを使用してプロトタイプを構築しましたが、多くの依存関係がありました。 Googleのものはブラウザ上の一般的なピアツーピアシナリオと密接に結びついているため、Openwebrtcモジュールを使用する方が簡単だと感じています。

以下をゼロからコンパイルしました。

libnice 0.1.14 gstreamer-sctp-1.0 usrsctp

それから、候補者を集めるためにlibniceと少し直接やり取りする必要があります。また、SDPファイルを手動で書き出す必要があります。しかし、パイプラインのソースを制御できるという制御の量は、価値があります。結果のパイプライン(1つのサーバーソースから2つのクライアントを使用)は以下のとおりです。

resulting webrtc pipeline

1
mpr

はい、そうです。 Ant Media Server用に公開および再生する負荷テストツールを開発しました。このツールは、メディアファイルをブロードキャストできます。 Ant Media Server で使用したものと同じネイティブWebRTCライブラリを使用しました。

0
mgct

もちろん。ネイティブのWebRTC APIを使用して、ピアとして会議に参加し、ビデオとオーディオの両方を記録できるプログラムを作成しています。

参照: ブラウザからWebRTCネイティブC++アプリケーションにオーディオをストリーミングする方法

ネイティブアプリからメディアを確実にストリーミングできます。

dummy_audio_fileを使用してローカルファイルからオーディオをストリーミングできることは間違いありません。ビデオストリーミングの進行状況に自分でアクセスする方法を見つけることができます。

0
simpx