web-dev-qa-db-ja.com

IPカメラを仮想カメラとして使用する

WebrtcでIPカメラを使いたいのですが。ただし、webrtcはWebカメラのみをサポートしているようです。そこで、IPカメラのストリームを仮想Webカメラに変換してみます。

IP Camera Adapter のようなソフトウェアを見つけましたが、うまく機能せず(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が見つかりません)。

誰かがIPカメラから仮想カメラにストリームを変換する方法を知っていますか?

14
Minz

FFMpegは、IPカメラからビデオを受信し、仮想カメラデバイスに転送できます。このためには、まず次のように、IPカメラのすべてのパラメーターを指定する必要があります。

-f video4linux2 -input_format mjpeg -i rtsp://192.168.1.16/play2.sdp

次に、例で使用したすべての出力パラメーター:

-f v4l2 /dev/video1

だからこのコマンドを試してください:

ffmpeg -f video4linux2 -input_format mjpeg -i rtsp://192.168.1.16/play2.sdp -f v4l2 /dev/video1
7
Denis Krivitski

Ffmpegとavconvはv4l2形式で問題が発生する可能性があるため、gstreamerを使用することもできます。パイプラインでのdecodebinの使用に注意してください。

gst-launch rtspsrc location=rtsp://192.168.2.18/play.sdp ! decodebin ! v4l2sink device=/dev/video1
3