apiVersion: v1 kind: ConfigMap metadata: namespace: {{ namespace }} name: nginx-streamer-{{ deploy.worker.name }} labels: app: nginx type: streamer worker: {{ deploy.worker.name }} data: nginx.conf: | worker_processes 4; pid /srv/nginx.pid; error_log /dev/stderr notice; load_module modules/ngx_rtmp_module.so; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /dev/null; server { listen {{ desc.streams[deploy.worker.flags.stream].port }} default_server; listen [::]:{{ desc.streams[deploy.worker.flags.stream].port }} default_server; server_name _; root /srv/www; location / { types { application/vnd.apple.mpegurl m3u8; } expires -1s; add_header Cache-Control "no-store,must-revalidate,max-age=0"; } } } rtmp { access_log /dev/null; server { listen localhost:1935; application hls { live on; hls on; hls_path /srv/www/hls; hls_fragment 3; hls_playlist_length 12; hls_nested on; hls_cleanup on; hls_fragment_naming timestamp; hls_fragment_slicing aligned; hls_type live; hls_base_url http://{{ deploy.worker.flags['stream-hostname'] }}:{{ desc.streams[deploy.worker.flags.stream].port }}/hls/; %% for mux in desc.streams[deploy.worker.flags.stream]['nginx-muxes'] %% for profile in desc.muxes[mux].formats.flash %% set abitrate = desc.globals.profiles[profile].audio %% set vbitrate = desc.globals.bitrates[desc.globals.formats.flash.video][desc.globals.profiles[profile].video] hls_variant -{{ profile }} BANDWIDTH={{ (abitrate + vbitrate) * 1000 }}; %% endfor %% endfor } application dash { live on; dash on; dash_path /srv/www/dash; dash_fragment 3; dash_playlist_length 12; dash_nested on; dash_cleanup on; } respawn on; %% for mux in desc.streams[deploy.worker.flags.stream]['nginx-muxes'] %% for profile in desc.muxes[mux].formats.flash exec_static ffmpeg -i http://flumotion-worker-{{ deploy.worker.name }}:{{ desc.streams[deploy.worker.flags.stream].port }}/{{ mux }}-flash-{{ profile }}.flv -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/hls/{{ mux }}-{{ profile }} -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f flv rtmp://localhost/dash/{{ mux }}-{{ profile }}; %% endfor %% endfor } }