I have a ubuntu server running on a network which is visible outside to the internet. My question is, is there a way to stream the video from the raspberry pi to my Ubuntu server and from there to any Web client on the internet? I have seen ways using Mjpeg,Motion,VLC etc. But the point here is we should know the internal IP of the Pi which I want to avoid and make it visible to the internet without port-forwarding on my router. Are there any ways to achieve this feat?
1 Answer
There are several ways to do this, based on whether your Ubuntu box is the router or not.
If you are forwarding traffic you can look into using iptables
with SNAT/DNAT.
Or you can use an application layer gateway that understands the streaming protocols to do this, optionally providing the user with multiple protocol options. For those who uses HTTP Live Stream, nginx
is a good application layer gateway.
crtmpserver
on your server where clients will connect to. (its very slick) You push a stream to crmpt from wherever (no need to open port on pushing device, ie Raspberry, since its outgoing), then clients connect to crmtpserver, hosted on VPS (digital ocean)? This is a FLV stream and required Flash if emvedding in a webpage. There is no HTML5 way yet. But you can connect to crmtpserver with VLC too. There is a nginx plugin callednginx-rtmp
which iscrtmpserver
packaged up fro nginx. This also works really well.