define rtmp config
This commit is contained in:
parent
c0dbc48562
commit
ecac694557
7 changed files with 89 additions and 2 deletions
|
@ -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
7
rtmp/Dockerfile
Normal 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
41
rtmp/index.html
Normal 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
40
rtmp/nginx.conf
Normal 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 *;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue