define rtmp config

This commit is contained in:
deflax 2021-10-10 15:40:13 +00:00
parent c0dbc48562
commit ecac694557
7 changed files with 89 additions and 2 deletions

View file

@ -35,7 +35,6 @@ services:
rtmp:
build: ./rtmp
container_name: rtmp
hostname: rtmp
volumes:
- "./data/rtmp/hls:/tmp/hls"
@ -50,7 +49,7 @@ services:
auth:
build: ./auth
container_name: auth_server
hostname: auth
networks:
internal: {}

7
rtmp/Dockerfile Normal file
View file

@ -0,0 +1,7 @@
FROM tiangolo/nginx-rtmp
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html /www/
COPY network.m3u8
COPY network0.ts
COPY network1.ts

41
rtmp/index.html Normal file
View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Live Stream</title>
</head>
<body>
<h2>Live Stream</h2>
<video id="video" width="800" controls></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<!-- Or if you want a more recent alpha version -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@alpha"></script> -->
<script>
var video = document.getElementById("video");
var videoSrc = "/hls/test.m3u8";
if (Hls.isSupported()) {
var hls = new Hls();
hls.loadSource(videoSrc);
hls.attachMedia(video);
}
// hls.js is not supported on platforms that do not have Media Source
// Extensions (MSE) enabled.
//
// When the browser has built-in HLS support (check using `canPlayType`),
// we can provide an HLS manifest (i.e. .m3u8 URL) directly to the video
// element through the `src` property. This is using the built-in support
// of the plain video element, without using hls.js.
//
// Note: it would be more normal to wait on the 'canplay' event below however
// on Safari (where you are most likely to find built-in HLS support) the
// video.src URL must be on the user-driven white-list before a 'canplay'
// event will be emitted; the last video event that can be reliably
// listened-for when the URL is not on the white-list is 'loadedmetadata'.
else if (video.canPlayType("application/vnd.apple.mpegurl")) {
video.src = videoSrc;
}
</script>
</body>
</html>

40
rtmp/nginx.conf Normal file
View file

@ -0,0 +1,40 @@
events {}
rtmp {
server {
listen 1935; # Listen on standard RTMP port
application live {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 10s; # default is 5s
hls_playlist_length 5m; # default is 30s
# once playlist length is reached it deletes the oldest fragments
# authentication
on_publish http://auth:8000/auth;
}
}
}
http {
server {
listen 8080;
location / {
root /www;
}
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
application/octet-stream ts;
}
root /tmp;
add_header Cache-Control no-cache;
# To avoid issues with cross-domain HTTP requests (e.g. during development)
add_header Access-Control-Allow-Origin *;
}
}
}