From 711d73c9fb14d17872ec6a585ffc87d9b0febc44 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 12 Oct 2025 13:42:27 +0200 Subject: [PATCH] updates --- Dockerfile | 11 +++++----- code/handlers/authhandler.lua | 26 +++++++++++++++-------- code/nginx.conf | 40 +++++++++++++++++++++++------------ docker-compose.yml | 10 +++++++++ 4 files changed, 60 insertions(+), 27 deletions(-) diff --git a/Dockerfile b/Dockerfile index e907a35..fc94c80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG RESTY_IMAGE_BASE="alpine" -ARG RESTY_IMAGE_TAG="3.15" +ARG RESTY_IMAGE_TAG="3.18" ARG FFMPEG_VERSION=4.4 ############################## @@ -234,7 +234,7 @@ RUN rm -rf /var/cache/* /tmp/* # Create FAT version of openresty-rtmp FROM build-openresty as build-openresty-fat -ARG RESTY_LUAROCKS_VERSION="3.7.0" +ARG RESTY_LUAROCKS_VERSION="3.8.0" RUN apk add --no-cache --virtual .build-deps \ perl-dev \ @@ -276,9 +276,9 @@ ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib ENV PATH="/usr/local/openresty/bin:/usr/local/openresty/luajit/bin:$PATH" -ENV LAPIS_VERSION=1.9.0 +ENV LAPIS_VERSION=1.16.0 -RUN apk add openssl-dev +RUN apk add openssl-dev curl RUN opm get spacewander/luafilesystem RUN luarocks install luasec RUN luarocks install busted @@ -315,7 +315,8 @@ RUN apk add --update \ opus \ rtmpdump \ x264-dev \ - x265-dev + x265-dev \ + lame-dev COPY --from=build-openresty-fat /usr/local/openresty /usr/local/openresty diff --git a/code/handlers/authhandler.lua b/code/handlers/authhandler.lua index 6dff3e9..50ced77 100644 --- a/code/handlers/authhandler.lua +++ b/code/handlers/authhandler.lua @@ -5,24 +5,32 @@ local function Authhandler(self) local name = self.params.name local password = self.params.password local yt_streamkey = self.params.youtube or nil + local yt_url = self.params.yt_url or nil + print("connected with: " .. name) + local endpoints = { - puik='something', - wstd='something', - buzz='something' - } - + puik='somethingsecret', + wstd='somethingsecret', + buzz='somethingsecret' + } if endpoints[name] == password then local urls = {} + + print("connected with: " .. name) 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 yt_url = "rtmp://127.0.0.1/youtube/" .. name + --table.insert(urls, yt_url) + +-- if yt_streamkey then +-- local yt_url = "rtmp://126.0.0.1/youtube/" .. yt_streamkey .. "&url=" .. yt_url +-- --local yt_url = "rtmp://" .. yt_streamkey +-- table.insert(urls, yt_url) +-- end local redirect_urls = table.concat(urls, ",") diff --git a/code/nginx.conf b/code/nginx.conf index aba1ea6..6fad587 100644 --- a/code/nginx.conf +++ b/code/nginx.conf @@ -11,27 +11,41 @@ rtmp { server { listen 1935; chunk_size 4000; + + # recommended directives: https://github.com/savonet/liquidsoap/issues/1389#issuecomment-1095096246 + idle_streams off; + wait_key on; + wait_video on; application stream { live on; - on_publish http://localhost:${{PORT}}/auth; + on_publish http://127.0.0.1:${{PORT}}/auth; } application youtube { live on; + allow publish 127.0.0.1; - exec ffmpeg -i rtmp://localhost:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/$name; + #exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/$name; + #exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://${arg_url}.rtmp.youtube.com/live1/$name; + + exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://x.rtmp.youtube.com/live2/hj5m-x8ff-pqyv-rtu0-26fk; + #exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/m5wk-h9xr-70g1-uzr7-dwgf; + exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://a.rtmp.youtube.com/live2/m0a5-r1rq-9qjf-pjk9-9kke; + + #exec ffmpeg -i rtmp://127.0.0.1:1935/youtube/$name -c:a copy -c:v copy -f flv rtmp://$name; } application streamhls { live on; + allow publish 127.0.0.1; #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/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; + exec ffmpeg -i rtmp://127.0.0.1:1935/streamhls/$name + -c:a copy -c:v copy -f flv rtmp://127.0.0.1/hls/$name_hi; + exec ffmpeg -i rtmp://127.0.0.1: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://127.0.0.1/hls/$name_low; # 2>/mnt/radio/logs/ffmpeg-$name_low.log; } @@ -54,11 +68,11 @@ rtmp { http { include mime.types; - init_by_lua_block { - require("socket") - require("lpeg") - math.randomseed(os.time()+ngx.worker.id()) - } +# init_by_lua_block { +# require("socket") +# require("lpeg") +# math.randomseed(os.time()+ngx.worker.id()) +# } server { @@ -108,9 +122,9 @@ http { location / { default_type text/html; - content_by_lua_block { + content_by_lua ' require("lapis").serve("app") - } + '; } location /favicon.ico { diff --git a/docker-compose.yml b/docker-compose.yml index 9a36265..d5bab2d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,9 +21,19 @@ services: - traefik.http.routers.puikheid_ssl.rule=Host(`puikheid.nl`) - traefik.http.routers.puikheid_ssl.entrypoints=websecure - traefik.http.routers.puikheid_ssl.tls.certresolver=myresolver +# - traefik.http.routers.puikheid_ssl.tls.middlewares=corsheader +# - "traefik.http.middlewares.corsheader.headers.accesscontrolalloworigin=origin-list-or-null" - traefik.http.services.puikheid.loadbalancer.server.port=8080 + - traefik.tcp.routers.puikheid.rule=HostSNI(`puikheid.nl`) + - traefik.tcp.routers.puikhuid.entrypoints=rtmp + #- traefik.tcp.routers.puikhuid.entrypoints=rtmps +# - traefik.tcp.routers.puikheid.service=puikheid + - traefik.tcp.routers.puikheid.tls=true + - traefik.tcp.routers.puikheid.tls.certresolver=myresolver +# - traefik.tcp.services.puikheid.loadbalancer.server.port=1935 + networks: web: