web-dev-qa-db-ja.com

Linuxデバイス上のWebRTCとgstreamer

私はLinuxカメラを備えた小さなコンピューター(ArduinoやRaspberry Piなど)を持っています-)およびgstreamerがインストールされています。 WebRTCテクノロジーを使用して、このデバイスからブラウザーにh264ビデオをストリーミングする必要があります。また、シグナリングサーバーとしてNodeJSを使用します。

簡単に言うと、デバイスからWebRTCクライアントを実行する必要があります。これを行うための最良の方法は何ですか?この目標に WebRTC Native API を使用できますか?小さなデバイスにインストールするにはどうすればよいですか?または、おそらく、gstreamerで遊んで、いくつかのwebrtcプラグインをインストールする必要がありますか?

11
Footniko

とにかくシグナリングサーバーを使用する必要があるので、 Janus-Gateway を使用する必要があると思います。シグナリングサーバー用のCentOSについておっしゃっていますが、CentOSで実行する場合、100%ではありませんが、依存関係をいくつかインストールするだけで、DebianJessieビルドで正常に実行できました。

Janusは、ゲートウェイで設定された通話全体(シグナリングとすべて)を処理します。したがって、SDP交換を実行できるように、ポート転送を実行する必要があります(これは、シグナリングサーバーでは心配する必要があります)。

  • ゲートウェイをインストールします。いくつかの依存関係がありますが、すべて単純なインストールでした

  • Janus_streamingプラグインを見てください。 gstreamerパイプラインからストリーミングするgstreamerの例があります。また、 streamingtestデモページ そのプラグインでJavascriptAPIがどのように機能するかを確認します

  • プラグインは、構成ファイルで指定されたポートをリッスンし、任意のIPアドレスからのトラフィックを受け入れます。したがって、同じネットワーク上の別のマシンでgstreamerパイプラインを実行し、プラグインに送信できることを期待しています。

注:JavaSciptがゲートウェイに送信するSDPを変更して、H264が含まれるようにする必要があります(おそらく、ネゴシエーションを強制するために、他のすべてのコーデックも削除します)。これを行うには、janus JavaScript API(jsep.sdp)のjsep関数の成功ケースに渡されたcreateOfferオブジェクトを介してsdpにアクセスします。

7
Benjamin Trent

もう1つの可能性は、GStreamer上に記述されている Kurento Media Server (KMS)を使用することです。 2つの可能性があります

  1. KMSをUbuntu14.04ボックスにインストールし、デバイスとブリッジして、デバイスがビデオストリームを生成し、それをKMSボックスに送信するようにします。そこから、それをVP9にトランスコードし、kurentoクライアントAPI(Node.jsから使用できます)を使用してWebRTCストリームとして非常に簡単に配布できます。トランスコーディングを行うアプリケーションには、WebRtcEndpoint(WebRTCを介してビデオストリームを送信できる)に接続されたRtpEndpoint(RTP/H.264でデバイスからビデオを受信する)が必要です。このオプションは、KMSを使用する標準的な方法であるため、実装が非常に簡単です。ただし、デバイス上でRTP/H.264ストリームを生成し、それに適切なSDPを生成する必要があります(これは、標準のGStreamer要素を使用して実行できます)。
  2. KMSをボックスに直接インストールしようとします。 KMSを特定のデバイスにコンパイルする必要があり、時間の投資が必要になる可能性があるため、これはより複雑になる可能性があります。さらに、デバイスでトランスコーディングを実行するとコストがかかりすぎて、CPUが不足する可能性があります。

免責事項:私はクレント開発チームのメンバーです

5
lulop

NodeJSシグナリングサーバーを使用したとのことですが。最近、エリクソンはオープンソースのWebRTC gstreamer要素をリリースしました: http://www.openwebrtc.io/ そして、リリースとともに、node.jsを使用してWebRTCデモも公開しました: http: //demo.openwebrtc.io:38080/ ;ここのコード: https://github.com/EricssonResearch/openwebrtc-examples/tree/master/server

2
jcarballo

Raspberry Pi 2のWebRTCの場合、 V4L を検討することをお勧めします。これにより、ライブオーディオとビデオをRpiからPC上の任意のブラウザー(HTML5)にストリーミングできます。

1
strunz