From cd77e170e6f7a116ee29149d2114b889cfdcc20c Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 13 Mar 2022 15:27:34 +0100 Subject: [PATCH] multi-redirect handler --- code/handlers/authhandler.lua | 24 ++++++++++++++++++++---- code/nginx.conf | 22 ++++++++++++++++------ 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/code/handlers/authhandler.lua b/code/handlers/authhandler.lua index 841df77..6dff3e9 100644 --- a/code/handlers/authhandler.lua +++ b/code/handlers/authhandler.lua @@ -4,18 +4,34 @@ local autoload = require("lapis.util").autoload local function Authhandler(self) local name = self.params.name local password = self.params.password - - print(name) - print(password) + local yt_streamkey = self.params.youtube or nil local endpoints = { puik='something', wstd='something', buzz='something' } + if endpoints[name] == password then - return {status = 201} + local urls = {} + + local hls_url = "rtmp://127.0.0.1/streamhls/" .. name + table.insert(urls, hls_url) + + if yt_streamkey then + local yt_url = "rtmp://127.0.0.1/youtube/" .. yt_streamkey + table.insert(urls, yt_url) + end + + local redirect_urls = table.concat(urls, ",") + + return { + "remote push", { + layout=false, + redirect_to=redirect_urls + } + } else return {status = 404} end diff --git a/code/nginx.conf b/code/nginx.conf index d0f9605..aba1ea6 100644 --- a/code/nginx.conf +++ b/code/nginx.conf @@ -16,13 +16,23 @@ rtmp { live on; on_publish http://localhost:${{PORT}}/auth; + } + + application youtube { + live on; + + exec ffmpeg -i rtmp://localhost:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/$name; + } + + application streamhls { + live on; #relays the incoming video to low quality streams on this server, audio-only version and to a different server - exec ffmpeg -i rtmp://localhost:1935/stream/$name - -c:a copy -c:v copy -f flv rtmp://localhost/hls/$name_hi; - exec ffmpeg -i rtmp://localhost:1935/stream/$name -max_muxing_queue_size 1024 - -c:a copy -c:v libx264 -b:v 500K -preset superfast -profile:v baseline -f flv rtmp://localhost/hls/$name_low - 2>/mnt/radio/logs/ffmpeg-$name_low.log; + exec ffmpeg -i rtmp://localhost:1935/streamhls/$name + -c:a copy -c:v copy -f flv rtmp://localhost/hls/$name_hi; + exec ffmpeg -i rtmp://localhost:1935/streamhls/$name -max_muxing_queue_size 1024 + -c:a copy -c:v libx264 -b:v 128K -preset superfast -profile:v baseline -f flv rtmp://localhost/hls/$name_low; +# 2>/mnt/radio/logs/ffmpeg-$name_low.log; } @@ -54,7 +64,7 @@ http { server { listen ${{PORT}}; lua_code_cache ${{CODE_CACHE}}; - + # nginx-rtmp hls and status endpoints location /hls { types {