WebrtcでIPカメラを使いたいのですが。ただし、webrtcはWebカメラのみをサポートしているようです。そこで、IPカメラのストリームを仮想Webカメラに変換してみます。
IPカメラアダプター のようなソフトウェアを見つけましたが、うまく機能せず(1秒あたり2〜3フレーム、2秒の遅延)、Windowsでのみ機能し、Linuxを使用することをお勧めします(可能な場合)。 。
私はffmpeg/avconvを試します:
最初に、 v4l2loopback を使用して仮想デバイスを作成しました(コマンドはSudo modprobe v4l2loopback
)。仮想デバイスが検出され、次のようなコマンドを使用してビデオ(.avi)でフィードできます:ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1
iPカメラからのストリームは以下で利用できます:rtsp://IP/play2.sdp
Dlink DCS-5222Lカメラの場合。このストリームはffmpegでキャプチャできます。
私の問題は、これら2つのステップの間にリンクを作成することです(rstpストリームを受信して仮想Webカメラに書き込む)。私は試した ffmpeg -re -i rtsp://192.168.1.16/play2.sdp -f video4linux2 -input_format mjpeg -i /dev/video0
ですが、v4l2でエラーが発生しています(v4l2が見つかりません)。
誰もがwebRTCでIPカメラを使用する方法を知っていますか?
短い答えは、いいえ。 RTSP
は、WebRTCのIETF標準では言及されておらず、現在サポートしているブラウザはありません。 Chromeディスカッション へのリンク。
より長い答えは、もしあなたがこのアイデアで本当に売り切れたら、あなたはネイティブ WebRTC API を利用してwebrtcゲートウェイ/ブレーカーを構築しなければならないということです。
これが 他の人が行った方法 であり、どのように行わなければならないかです。
アップデート7/30/2014:
私は janus-gateway を実験しましたが、ストリーミングプラグインは、rtpストリームを取得してwebrtcピアにプッシュできるため、これを正確に実行すると思います。 RTSPの場合、おそらく gstreamerのようなライブラリ を使用してRTSPクライアントを作成し、次にRTPおよびRTCPを接続からWebRTCピアにプッシュします。
RTSPまたはHTTPビデオフィードをWebRTCストリームに変換する簡単な例を作成しました。この例は Kurento Media Server (KMS)に基づいており、この例を機能させるにはインストールする必要があります。
KMSをインストールしてお楽しみください...
https://github.com/lulop-k/kurento-rtsp2webrtc
2015年9月22日更新。トランスコーディングがこの問題の解決策の一部にすぎない理由に関する技術的な説明については、 この投稿 を確認してください。
Janus-gateway 最近、ストリーミングプラグインに(libcurlに基づく)単純なRTSPサポートが追加されました commit
次に、カメラとRTSPをネゴシエートするようにゲートウェイを構成し、RTPストリーミングプラグイン構成にWebRTCを追加することを考えました<prefix>/etc/janus/janus.plugin.streaming.cfg
[camera]
type = rtsp
id = 99
description = Dlink DCS-5222L camera
audio = no
video = yes
url=rtsp://192.168.1.16/play2.sdp
次に、ストリーミングデモページを使用してWebRTCストリームにアクセスできます http://..../demos/streamingtest.html
Video4linuxがインストールされている場合、次のコマンドはrtspストリームから仮想Webカメラを作成します。
gst-launch rtspsrc location=rtsp://192.168.2.18/play.spd ! decodebin ! v4l2sink device=/dev/video1
あなたは正しい軌道に乗っていました、「デコードビン」はミッシングリンクでした。
ネイティブWebRTCで手を汚したい人のために、読んでください...
単純なffmpeg-webrtcラッパーを介してIPカメラのRTSPストリームをストリーミングしてみることができます: https://github.com/TekuConcept/WebRTCExamples 。
これは、VideoCaptureModuleおよびAudioDeviceModule抽象クラスを使用して、未加工メディアを注入します。内部では、これらの抽象クラスは、video4linuxやalsa-audioなどのプラットフォーム固有のすべてのハードウェアに拡張されています。
ラッパーはffmpeg CLIツールを使用しますが、ffmpeg Cライブラリー自体を使用することはそれほど難しくないと思います。 (ラッパーはソースメディアのトランスコーディングまたはデコードに依存しており、ICE接続の要件に関してWebRTCが再エンコードできるようにします。引き続きエンコード済みメディアのパススルーを処理します。)