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>