EDIT: I have experienced some lag with webm streaming, scroll down for swf configuration.
Live stream camera (Foscam in my case) over the internet cheat sheet:
apt-get install software-properties-common add-apt-repository ppa:mc3man/trusty-media apt-get update apt-get install ffmpeg
Create ffserver.conf file
nano /etc/ffserver.conf
HTTPPort 8090 # Port to bind the server to HTTPBindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 15 MaxBandwidth 50000 # Maximum bandwidth per client # set this high enough to exceed stream bitrate CustomLog - <Feed feed1.ffm> File /tmp/feed1.ffm FileMaxSize 1g ACL allow localhost ACL allow 192.168.0.0 192.168.0.255 </Feed> <Stream live.webm> Format webm Feed feed1.ffm VideoCodec libvpx VideoSize 640x480 VideoFrameRate 30 VideoBitRate 512 VideoBufferSize 512 NoAudio AVOptionVideo flags +global_header StartSendOnKey </Stream> <Stream status.html> # Server status URL Format status # Only allow local people to get the status ACL allow localhost ACL allow 192.168.0.0 192.168.0.255 </Stream> <Redirect index.html> # Just an URL redirect for index # Redirect index.html to the appropriate site URL live.webm/ </Redirect>
Save, exit and start the services
ffserver > /dev/null 2>&1 & ffmpeg -loglevel error -r 30 -i rtsp://user:pass@camera_IP:port/url http://LAN_IP_WHERE_FFSERVER_IS_RUNNING:8090/feed1.ffm /dev/null 2>/var/log/ffmpeg.log &
Visit http://LAN_IP_WHERE_FFSERVER_IS_RUNNING:8090/live.webm
For status go to http://LAN_IP_WHERE_FFSERVER_IS_RUNNING:8090/status.html
I have experienced some lag with the above configuration, here is the config for a swf streaming:
HTTPPort 8090 # Port to bind the server to HTTPBindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 15 MaxBandwidth 50000 # Maximum bandwidth per client # set this high enough to exceed stream bitrate CustomLog - <Feed feed1.ffm> File /tmp/feed1.ffm FileMaxSize 1g ACL allow localhost ACL allow 192.168.0.0 192.168.0.255 </Feed> <Stream live.ffm> Feed feed1.ffm Format swf VideoCodec flv VideoFrameRate 30 VideoBufferSize 80000 VideoBitRate 100 # quality ranges - 1-31 (1 = best, 31 = worst) VideoQMin 1 VideoQMax 5 VideoSize 1024x786 PreRoll 0 Noaudio </Stream> <Stream status.html> # Server status URL Format status # Only allow local people to get the status ACL allow localhost ACL allow 192.168.0.0 192.168.0.255 </Stream> <Redirect index.html> # Just an URL redirect for index # Redirect index.html to the appropriate site URL live.ffm/ </Redirect>
Save and restart ffserver and ffmpeg.
Edit your index.html file to play swf file in the browser:
<html> <head> <meta charset="UTF-8"> <link rel="icon" href="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <title>Site title</title> <script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> swfobject.registerObject("myFlashContent", "9.0.0", "expressInstall.swf"); </script> <script type="text/javascript"> swfobject.embedSWF("http://FF_SERVER_IP:8090/live.ffm", "myContent", "1024", "786", "9.0.0"); </script> </head> <body> <p align="top">Some optional text.</p> <div id="myContent"> <p>Live stream</p> </div> </video> </body>