Elphel Development Blog
June 1, 2020 12:39 PM
You have subscribed to these e-mail notices about new posts to the blog.
If you want to change your settings or unsubscribe please visit:
https://blog.elphel.com/post_notification_header-2/?code=cd9ad4791210eef4735d43f52cc21dd2&addr=support-list%40support.elphel.com&
If you want to change your settings or unsubscribe please visit:
https://blog.elphel.com/post_notification_header-2/?code=cd9ad4791210eef4735d43f52cc21dd2&addr=support-list%40support.elphel.com&
Convert ip cam to web cam in Linux for Jitsi, Zoom, etc.
Basically, one need to direct the ip cam stream (mjpeg or rtsp) to a virtual v4l2 device which acts like a web cam and is automatically picked up by a web browser or a web cam application. This can be easily done by gstreamer or ffmpeg.Quick setup
Install and create a virtual webcam
~$ sudo apt install v4l2loopback-dkms
~$ sudo modprobe v4l2loopback devices=1
Direct the stream
The options below are for gstreamer/ffmpeg and rtsp/mjpeg streams: gstreamer:# rtsp stream
~$ sudo gst-launch-1.0 rtspsrc location=rtsp://192.168.0.9:554 ! rtpjpegdepay ! jpegdec ! videoconvert ! tee ! v4l2sink device=/dev/video0 sync=false
# mjpeg stream
~$ sudo gst-launch-1.0 souphttpsrc is-live=true location=http://192.168.0.9:2323/mimg ! jpegdec ! videoconvert ! tee ! v4l2sink device=/dev/video0
ffmpeg:
# rtsp stream
~$ sudo ffmpeg -i rtsp://192.168.0.9:554 -fflags nobuffer -pix_fmt yuv420p -f v4l2 /dev/video0
# mjpeg stream
~$ sudo ffmpeg -i http://192.168.0.9:2323/mimg -fflags nobuffer -pix_fmt yuv420p -r 30 -f v4l2 /dev/video0
Finally
Start a video conference application, select the webcam from the menu (/dev/video0). Test link: meet.jit.siDetails
Requirements
- ffmpeg (2.8.15) or gstreamer (1.8.3)
- IP camera capable of streaming mjpeg or rtsp – in this case it’s Elphel NC393
IP camera setup
- rtsp stream ports for Elphel NC393 cameras: 554, 556, 558, 560
- mjpeg stream ports for Elphel NC393 cameras: 2323, 2324, 2325, 2326
- stream resolution/fps: 1920×1080, 30fps
- ffmpeg for mjpeg stream – “-r 30” sets fps – the default ffmpeg setting is 25 fps
Useful commands
Print web cam settings:v4l2-ctl -d 0 --all
Gstreamer play mjpeg:
gst-launch-1.0 souphttpsrc is-live=true location=http://192.168.0.9:2323/mimg ! jpegdec ! autovideosink
Gstreamer play rtsp:
gst-launch-1.0 -v playbin uri=rtsp://192.168.0.9:554 uridecodebin0::source::latency=0
Test stream for web cam:
sudo gst-launch-1.0 videotestsrc ! tee ! v4l2sink device=/dev/video0
Comments
- Gstreamer 1.8.3 didn’t work without tees in the pipeline.
- modprobe v4l2loopback can create multiple devices
_______________________________________________ Support-list mailing list Support-list@support.elphel.com http://support.elphel.com/mailman/listinfo/support-list_support.elphel.com