nms
Este commit está contenido en:
109
production/nms/app.js
Archivo normal
109
production/nms/app.js
Archivo normal
@@ -0,0 +1,109 @@
|
||||
const NodeMediaServer = require('./');
|
||||
|
||||
const config = {
|
||||
rtmp: {
|
||||
port: 1935,
|
||||
chunk_size: 60000,
|
||||
gop_cache: true,
|
||||
ping: 30,
|
||||
ping_timeout: 60
|
||||
},
|
||||
http: {
|
||||
port: 8000,
|
||||
mediaroot: './media',
|
||||
webroot: './www',
|
||||
allow_origin: '*',
|
||||
api: true
|
||||
},
|
||||
// https: {
|
||||
// port: 8443,
|
||||
// key: './privatekey.pem',
|
||||
// cert: './certificate.pem',
|
||||
// },
|
||||
auth: {
|
||||
api: true,
|
||||
api_user: 'admin',
|
||||
api_pass: 'adminadminadmin',
|
||||
play: false,
|
||||
publish: true,
|
||||
secret: 'nodemedia2020'
|
||||
},
|
||||
trans: {
|
||||
ffmpeg: '/usr/bin/ffmpeg',
|
||||
tasks: [
|
||||
{
|
||||
app: 'live',
|
||||
ac: 'aac',
|
||||
hls: true,
|
||||
hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]'
|
||||
// dash: true,
|
||||
// dashFlags: '[f=dash:window_size=3:extra_window_size=5]'
|
||||
},
|
||||
// {
|
||||
// app: 'live',
|
||||
// mp4: true,
|
||||
// mp4Flags: '[movflags=faststart]'
|
||||
// }
|
||||
]
|
||||
},
|
||||
// {
|
||||
// app: 'live',
|
||||
// hls: true
|
||||
// },
|
||||
// relay: {
|
||||
// ffmpeg: "/usr/bin/ffmpeg",
|
||||
// tasks: [{
|
||||
// app: 'live',
|
||||
// mode: 'push',
|
||||
// edge: 'rtmp://a.rtmp.youtube.com/live2/xvc5-mcaq-rkcu-p5fy-ep2e',
|
||||
// appendName: false
|
||||
// }]
|
||||
// }
|
||||
};
|
||||
|
||||
|
||||
let nms = new NodeMediaServer(config)
|
||||
nms.run();
|
||||
|
||||
nms.on('preConnect', (id, args) => {
|
||||
console.log('[NodeEvent on preConnect]', `id=${id} args=${JSON.stringify(args)}`);
|
||||
// let session = nms.getSession(id);
|
||||
// session.reject();
|
||||
});
|
||||
|
||||
nms.on('postConnect', (id, args) => {
|
||||
console.log('[NodeEvent on postConnect]', `id=${id} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
nms.on('doneConnect', (id, args) => {
|
||||
console.log('[NodeEvent on doneConnect]', `id=${id} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
nms.on('prePublish', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on prePublish]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
// let session = nms.getSession(id);
|
||||
// session.reject();
|
||||
});
|
||||
|
||||
nms.on('postPublish', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on postPublish]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
nms.on('donePublish', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on donePublish]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
nms.on('prePlay', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on prePlay]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
// let session = nms.getSession(id);
|
||||
// session.reject();
|
||||
});
|
||||
|
||||
nms.on('postPlay', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on postPlay]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
nms.on('donePlay', (id, StreamPath, args) => {
|
||||
console.log('[NodeEvent on donePlay]', `id=${id} StreamPath=${StreamPath} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
33
production/nms/docker-compose.yml
Archivo normal
33
production/nms/docker-compose.yml
Archivo normal
@@ -0,0 +1,33 @@
|
||||
version: "2"
|
||||
|
||||
services:
|
||||
nms:
|
||||
image: illuspas/node-media-server
|
||||
container_name: nms
|
||||
hostname: nms
|
||||
restart: always
|
||||
entrypoint:
|
||||
- /bin/sh
|
||||
- /usr/src/app/entrypoint.sh
|
||||
volumes:
|
||||
- ./app.js:/usr/src/app/app.js:ro
|
||||
- ./entrypoint.sh:/usr/src/app/entrypoint.sh:ro
|
||||
- ./media:/usr/src/app/media
|
||||
- ./lists:/lists:ro
|
||||
expose:
|
||||
- "8000"
|
||||
- "8443"
|
||||
ports:
|
||||
- "1936:1935"
|
||||
- "1936:1935/udp"
|
||||
networks:
|
||||
mynet:
|
||||
ipv4_address: 172.14.0.101
|
||||
|
||||
networks:
|
||||
mynet:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.14.0.0/24
|
||||
|
||||
11
production/nms/entrypoint.sh
Archivo normal
11
production/nms/entrypoint.sh
Archivo normal
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
sed -i -e 's/v[[:digit:]]\..*\//edge\//g' /etc/apk/repositories
|
||||
apk upgrade
|
||||
apk add ffmpeg
|
||||
node app.js &
|
||||
sleep 1s
|
||||
while [ True ]; do
|
||||
for i in $(cat /lists/fanta.txt); do
|
||||
ffmpeg -loglevel quiet -re -i async:cache:"$i" -threads 2 -f flv -vcodec h264 -acodec aac rtmp://127.0.0.1/live/streaming?sign=1590502038931-b04c1d7b5bfc3dc61ddce23b2dda3649
|
||||
done
|
||||
done
|
||||
Referencia en una nueva incidencia
Block a user