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 working.
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> ===
student
24

edits