Streaming local Webcam in a Linux machine, and acessing it when on vacations - which protocol to choose?
I want to configure a local webcam to stream (and possibly record) a live feed open to the internet, and acess it half-world away while traveling, using FOSS only acessing it via Android VLC
This guide was quite comprehensive; however the packages for nginx-rtmp are quite abandoned in arch linux. So I thought maybe WebRTC could be an alternative - the communication itself should be encrypted, which WebRTC seems to do; however, I still can't figure out if VLC will handle this well
Also, it seems that I might need to self-host a VPN to achieve this?
What are my options? Has anyone else done this ?
rtmp {
server {
listen 1935;
chunk_size 4096;
allow publish 127.0.0.1;
deny publish all;
application live {
live on;
exec_pull /usr/bin/ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream;
record off;
}
}
}
A few notes:
/dev/video4 is your camera;
Some systems (debian) may require this sudo usermod -a -G video www-data to make sure it will work. Because ffmpeg will be launched with the www-data user that doesn't have access to the video cameras.
It will even turn off the camera if nobody is connected;
Use ffmpeg -f v4l2 -list_formats all -i /dev/video0 to find what formats your camera supports;
Watch the stream from VLC with the url: rtmp://device-ip/live/stream
Thank you, I managed to get it working with MediaMTX and DockoVPN
I still don't know how I would manage dynamic IP changes during the days I'm away, that would break the VPN
For the dynamic ip address that you can get a free domain name from afraid or noip or maybe others and point your vpn to your domain name instead of direct ip address. Following that you can run cron job scripts to ensure the ip address that the domain points to is up to date