SSTIC 2017 - Live stream

 
HLS
~30-60s delay in HLS
 
Time shift
Use player controls to seek about 15 minutes of buffer (if available)

Change quality settings if you encounter buffering, long loading times, or stuttering.
Sync to live, refresh page or use a standalone player if you encounter blank video/time issues.

 

Mobile users may install VLC to play both RTMP and HLS streams:

Refer to the Raw Stream URLs tab for playable streams.

If using RTMP streams, it is adivsed to put a single playlist entry and enable the "loop" playback mode, so that the stream will resume after connectivity issues.

Available streams are listed below. To watch:

  • RTMP: open the desired stream URL with mplayer or VLC
  • HLS: open the desired stream URL with mplayer, VLC, Quicktime, Safari or an iOS / Android web browser
Quality HLS (TCP/80) RTMP (TCP/1935)
Automatic live.m3u8 -
720p @ 2 Mbits/s live_hi/index.m3u8 live_hi
540p @ 1 Mbits/s live_mid/index.m3u8 live_mid
360p @ 500 Kbits/s live_low/index.m3u8 live_low

  • The HTML5 player uses HLS only
  • Stream delay varies between 5-10 seconds (RTMP) and 30-60 seconds (HLS)

A live chat is available on IRC:

Questions may be asked on your behalf by audience members if there is enough time.

The stream is officially mirrored at the following locations:

You can set up your own mirror by following the instructions below (or in French on this wiki page). Please notify us (streaming ~at- lists.sstic.org) if you want to appear in the above list.


Creating a live stream mirror

It is possible to create a relaying mirror server which will benefit from guaranteed feed slots at our source. This will allow you to either save your organization's bandwidth or offer a new public mirror.

The server will not perform video transcoding. CPU usage will thus come from client connections only.

By following the instructions below, you will be able to create such a mirror server handling both RTMP (tcp/1935) and HLS (tcp/80) protocols. It will grab the SSTIC live feed only once, from our source, to deliver it to your clients: bandwidth can therefore be limited to approximately 5 Mbits/s.

The HLS protocol uses HTTP (tcp port 80) and can be transparently proxified/cached. The RTMP protocol requires allowing tcp port 1935 from your clients to your mirror server.

You may also transparently redirect your clients who try to reach the official servers (on the internet) towards your private mirror: a firewall rule, a proxy configuration or DNS entry will usually be sufficient.

Finally, all HTML resources are hosted on the mirror server. No external HTTP request will be performed by your clients. Javascript is still required.

Requirements
  1. These instructions are based off an up-to-date Debian stable installation. It is possible to use any Linux distribution of course, or any system able to compile nginx and its RTMP module.
  2. A 2 GHz single- or dual-core machine, with 1 or 2 GB of RAM should be enough (probably even less than that). A virtual machine or LXC container are also an option.
  3. Apart from the distribution and additional packages, allow for an additional 50 to 500 MB of storage for the temporary video fragments.
  4. Your machine must be able to connect to our transcoding server on tcp port 1935.
  5. Notify the SSTIC live streaming operators (streaming ~at- lists.sstic.org) of the public IP address which will be used by your mirror server (or its gateway) to pull the RTMP feeds. Your server must be individually allowed to pull from our transcoding source. In order to prevent abuse, feed slots may be limited to organizations with a large expected audience. Please state your organization/affiliation in case we should resort to such measure, especially if your internet access appears residential or anonymous.
  6. Allow access to tcp ports 80 (HLS streams, HTML pages and players) and/or 1935 (optional RTMP stream) on your server from your clients.
System installation

An automated installation process is not provided so that system administrators fully understand what is at stake. While the default configuration should be relatively tightened, securing your mirror is your own responsibility.

Commands from steps 1, 2, 9, 10, 11, 15 and 16 may require elevated privileges (root).

  1. Install Debian stable on your machine and apply the latest updates (apt-get update && apt-get upgrade).
  2. apt-get install build-essential libpcre3 libpcre3-dev libssl-dev unzip
  3. wget http://nginx.org/download/nginx-1.12.0.tar.gz
  4. wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
  5. tar zxvf nginx-1.12.0.tar.gz
  6. unzip master.zip
  7. cd nginx-1.12.0
  8. ./configure --add-module=../nginx-rtmp-module-master --with-http_ssl_module
  9. make && make install
  10. mkdir -p /var/www/stat /var/www/hls /var/www/player
  11. cp ../nginx-rtmp-module-master/stat.xsl /var/www/stat/
  12. cd -
  13. wget https://static.sstic.org/streaming2017/player.tar.gz
  14. sha256sum player.tar.gz (the result must be: eb30fbe20df967f606d3756de96d42a47c4867c17a6d32ab73fa43773126afb2)
  15. tar zxvf player.tar.gz -C /var/www/player
  16. sed -e 's/streaming.sstic.org/192.168.1.1/g' -i /var/www/player/index.html (optional step, replace 192.168.1.1 with the IP address or hostname of your mirror server, although Javascript should automatically set these with window.location.host)

You now have a Nginx 1.12.0 server compiled with the RTMP/HLS module, enabling you to pull feeds and deliver them to your clients.

Nginx is installed in /usr/local/nginx/. Its configuration file is located at /usr/local/nginx/conf/nginx.conf. To start the server in the background, run /usr/local/nginx/sbin/nginx.

It is necessary to stop and restart the server completely on RTMP/HLS configuration changes. To stop the server, run /usr/local/nginx/sbin/nginx -s stop.

You now only need to save the proper configuration file which will pull the feeds and deliver them over RTMP and HLS.

Nginx configuration file
  • Documentation is available here: https://github.com/arut/nginx-rtmp-module/wiki/Directives
  • Do not forget to fully restart nginx after modifying its configuration file.
  • Open a browser to http://<IP or hostname>/ to get an HTML5 / Flash player decoding feeds from your own mirror.
  • Statistics are available at http://<IP or hostname>/stat (RTMP stats only).
  • Do not forget to notify SSTIC operators to allow access to our source transcoding server from the public IP address of your mirror.

Copy the file below to /usr/local/nginx/conf/nginx.conf:

#user  nobody;
worker_processes  1;

events {
	worker_connections  1024;
}

rtmp {
	server {
		listen 1935;
		chunk_size 4096;

		application hls {
			# Application for writing HLS chunks to /var/www/hls/ 
			live on;
			hls on;
			hls_path /var/www/hls;
			hls_nested on;
			hls_playlist_length 10m; # 10 minutes takes about 300 MB.
			hls_type live;
			
			pull rtmp://178.33.71.43/hls/live_low name=live_low static;
			pull rtmp://178.33.71.43/hls/live_mid name=live_mid static;
			pull rtmp://178.33.71.43/hls/live_hi name=live_hi static;

			hls_variant _low BANDWIDTH=512000;
			hls_variant _mid BANDWIDTH=1024000;
			hls_variant _hi  BANDWIDTH=2048000;
			
			# maximum allowed connections
			# warning: the true limit shall be done at the http level, 
			# this is for RTMP clients only
			
			# max_connections 512;
			
			# allow local publish only
			allow publish 127.0.0.1;
			deny publish all;
			
			# allow all RTMP clients 
			allow play all;
			#deny play all;
		}
	}
}

# HTTP can be used for accessing RTMP stats
http {
	include       mime.types;
	default_type  application/octet-stream;

	sendfile	on;
	keepalive_timeout	65;
	#gzip  on;

	server {
		listen	80;
		server_name	localhost;

		# This URL provides RTMP statistics in XML
		location /stat {
			rtmp_stat all;
			# Use this stylesheet to view XML as web page
			# in browser
			rtmp_stat_stylesheet stat.xsl;
		}
		
		location /stat.xsl {
			# XML stylesheet to view RTMP stats.
			# Copy stat.xsl wherever you want
			# and put the full directory path here
			root /var/www/stat/;
		}

		location /hls {
			# Serve HLS fragments
			types {
				application/vnd.apple.mpegurl m3u8;
				video/mp2t ts;
			}
			root /var/www;
			add_header Cache-Control no-cache;
			add_header 'Access-Control-Allow-Origin' "$http_origin";
		}
		
		location / {
			root /var/www/player;
			add_header Cache-Control no-cache;
			}
		
		# redirect server error pages to the static page /50x.html
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}
	}
}
							

If you are experiencing severe issues on the official mirrors, with the web players or need to request authorization for a private mirror, you can either:

 

https://www.sstic.org/ || June 7-9, 2017, Rennes (France) || Schedule (CEST)