FOSSMeet Video Team: Difference between revisions
Updated details about Nginx server
No edit summary |
(Updated details about Nginx server) |
||
Line 1: | Line 1: | ||
This Page is to describe how the FOSSMeet video stream is | This Page is to describe how the FOSSMeet'24 video stream was setup. | ||
== Live Streaming Server == | |||
The live streaming server was setup using nginx (with an rtmp module). Please use this [https://madhav.madhuvans.in/blog/nginx-rtmp/ link] to get an insight of the config files involved and brief explanation of concepts behind it. | |||
We used a VM in SSL with 6 Cores and 6 GB of RAM, however even with around 10-15 concurrent consumers, the server was not under heavy load (<10% thats how amazing nginx is). We didn't configure to serve multiple resolutions and bitrates, so maybe the reason for less load was that. The VM needs a port apart from '''https''' open to the internet to accept rtmp traffic. Please consult SSL Admins for the exact ports used as it wont be disclosed here. | |||
<pre> | |||
daemon off; | |||
error_log /dev/stdout info; | |||
events { | |||
worker_connections 1024; | |||
} | |||
rtmp { | |||
server { | |||
listen ${RTMP_PORT}; | |||
chunk_size 4000; | |||
application hls { | |||
live on; | |||
hls on; | |||
hls_fragment_naming system; | |||
hls_fragment 5; | |||
hls_playlist_length 10; | |||
hls_path /opt/data/hls; | |||
hls_nested on; | |||
#hls_variant _720p2628kbs BANDWIDTH=2628000,RESOLUTION=1280x720; | |||
#hls_variant _480p1128kbs BANDWIDTH=1128000,RESOLUTION=854x480; | |||
#hls_variant _360p878kbs BANDWIDTH=878000,RESOLUTION=640x360; | |||
#hls_variant _240p528kbs BANDWIDTH=528000,RESOLUTION=426x240; | |||
#hls_variant _240p264kbs BANDWIDTH=264000,RESOLUTION=426x240; | |||
} | |||
} | |||
} | |||
http { | |||
root /www/static; | |||
sendfile off; | |||
tcp_nopush on; | |||
server_tokens off; | |||
access_log /dev/stdout combined; | |||
# Uncomment these lines to enable SSL. | |||
# ssl_protocols TLSv1.2 TLSv1.3; | |||
# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; | |||
# ssl_prefer_server_ciphers off; | |||
# ssl_session_cache shared:SSL:10m; | |||
# ssl_session_timeout 1d; | |||
server { | |||
listen ${HTTP_PORT}; | |||
# Uncomment these lines to enable SSL. | |||
# Update the ssl paths with your own certificate and private key. | |||
# listen ${HTTPS_PORT} ssl; | |||
# ssl_certificate /opt/certs/example.com.crt; | |||
# ssl_certificate_key /opt/certs/example.com.key; | |||
location /hls { | |||
types { | |||
application/vnd.apple.mpegurl m3u8; | |||
video/mp2t ts; | |||
} | |||
root /opt/hlsdata; | |||
add_header Cache-Control no-cache; | |||
add_header Access-Control-Allow-Origin *; | |||
} | |||
location /live { | |||
alias /opt/data/hls; | |||
types { | |||
application/vnd.apple.mpegurl m3u8; | |||
video/mp2t ts; | |||
} | |||
add_header Cache-Control no-cache; | |||
add_header Access-Control-Allow-Origin *; | |||
} | |||
location /stat { | |||
rtmp_stat all; | |||
rtmp_stat_stylesheet stat.xsl; | |||
} | |||
location /stat.xsl { | |||
root /www/static; | |||
} | |||
location /crossdomain.xml { | |||
default_type text/xml; | |||
expires 24h; | |||
} | |||
} | |||
} | |||
</pre> | |||
=== <u>Requirements</u> === | === <u>Requirements</u> === |