Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d4bb2107a | ||
|
|
711d73c9fb |
25
Dockerfile
25
Dockerfile
@ -1,15 +1,15 @@
|
||||
ARG RESTY_IMAGE_BASE="alpine"
|
||||
ARG RESTY_IMAGE_TAG="3.15"
|
||||
ARG FFMPEG_VERSION=4.4
|
||||
ARG RESTY_IMAGE_TAG="3.22.1"
|
||||
ARG FFMPEG_VERSION=4.4.6
|
||||
|
||||
##############################
|
||||
# Build the OpenResty-build image.
|
||||
# mostly from https://github.com/openresty/docker-openresty/blob/master/alpine/Dockerfile
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as build-openresty
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} AS build-openresty
|
||||
|
||||
ARG RESTY_IMAGE_BASE
|
||||
ARG RESTY_IMAGE_TAG
|
||||
ARG RESTY_VERSION="1.19.9.1"
|
||||
ARG RESTY_VERSION="1.27.1.2"
|
||||
ARG RESTY_OPENSSL_VERSION="1.1.1l"
|
||||
ARG RESTY_OPENSSL_PATCH_VERSION="1.1.1f"
|
||||
ARG RESTY_OPENSSL_URL_BASE="https://www.openssl.org/source"
|
||||
@ -162,7 +162,7 @@ RUN cd /tmp \
|
||||
|
||||
###############################
|
||||
# Build the FFmpeg-build image.
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as build-ffmpeg
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} AS build-ffmpeg
|
||||
ARG FFMPEG_VERSION
|
||||
ARG PREFIX=/usr/local
|
||||
ARG MAKEFLAGS="-j4"
|
||||
@ -232,9 +232,9 @@ RUN rm -rf /var/cache/* /tmp/*
|
||||
|
||||
######################################
|
||||
# Create FAT version of openresty-rtmp
|
||||
FROM build-openresty as build-openresty-fat
|
||||
FROM build-openresty AS build-openresty-fat
|
||||
|
||||
ARG RESTY_LUAROCKS_VERSION="3.7.0"
|
||||
ARG RESTY_LUAROCKS_VERSION="3.12.2"
|
||||
|
||||
RUN apk add --no-cache --virtual .build-deps \
|
||||
perl-dev \
|
||||
@ -249,6 +249,7 @@ RUN apk add --no-cache --virtual .build-deps \
|
||||
outils-md5 \
|
||||
perl \
|
||||
unzip \
|
||||
wget \
|
||||
&& cd /tmp \
|
||||
&& curl -fSL https://luarocks.github.io/luarocks/releases/luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
|
||||
&& tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
|
||||
@ -276,9 +277,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 git
|
||||
RUN opm get spacewander/luafilesystem
|
||||
RUN luarocks install luasec
|
||||
RUN luarocks install busted
|
||||
@ -289,7 +290,7 @@ RUN luarocks install moonscript
|
||||
|
||||
##########################
|
||||
# Build the release image.
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} as openresty-rtmp
|
||||
FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} AS openresty-rtmp
|
||||
LABEL MAINTAINER dreamer <dreamer@puikheid.nl>
|
||||
|
||||
# Set default ports.
|
||||
@ -311,11 +312,13 @@ RUN apk add --update \
|
||||
libvpx \
|
||||
libvorbis \
|
||||
libwebp \
|
||||
libwebpmux \
|
||||
libtheora \
|
||||
opus \
|
||||
rtmpdump \
|
||||
x264-dev \
|
||||
x265-dev
|
||||
x265-dev \
|
||||
lame-dev
|
||||
|
||||
|
||||
COPY --from=build-openresty-fat /usr/local/openresty /usr/local/openresty
|
||||
|
||||
@ -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, ",")
|
||||
|
||||
|
||||
@ -12,26 +12,40 @@ rtmp {
|
||||
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 {
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
version: "3.3"
|
||||
services:
|
||||
puikheid:
|
||||
environment:
|
||||
@ -21,9 +20,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:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user