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カメラから仮想カメラにストリームを変換する方法を知っていますか?
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
Ffmpegとavconvはv4l2形式で問題が発生する可能性があるため、gstreamerを使用することもできます。パイプラインでのdecodebin
の使用に注意してください。
gst-launch rtspsrc location=rtsp://192.168.2.18/play.sdp ! decodebin ! v4l2sink device=/dev/video1