Init commit
This commit is contained in:
101
server.js
Normal file
101
server.js
Normal file
@@ -0,0 +1,101 @@
|
||||
const NodeMediaServer = require('node-media-server');
|
||||
const express = require('express');
|
||||
const path = require('path');
|
||||
|
||||
// Configuración del servidor RTMP
|
||||
const config = {
|
||||
rtmp: {
|
||||
port: 1935,
|
||||
chunk_size: 60000,
|
||||
gop_cache: true,
|
||||
ping: 30,
|
||||
ping_timeout: 60
|
||||
},
|
||||
http: {
|
||||
port: 8000,
|
||||
mediaroot: './media',
|
||||
allow_origin: '*'
|
||||
},
|
||||
trans: {
|
||||
ffmpeg: 'ffmpeg',
|
||||
tasks: [
|
||||
{
|
||||
app: 'live',
|
||||
hls: true,
|
||||
hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]',
|
||||
hlsKeep: false,
|
||||
dash: true,
|
||||
dashFlags: '[f=dash:window_size=3:extra_window_size=5]',
|
||||
dashKeep: false
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
// Servidor de medios RTMP
|
||||
const nms = new NodeMediaServer(config);
|
||||
|
||||
nms.on('preConnect', (id, args) => {
|
||||
console.log('[NodeEvent on preConnect]', `id=${id} args=${JSON.stringify(args)}`);
|
||||
});
|
||||
|
||||
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)}`);
|
||||
});
|
||||
|
||||
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)}`);
|
||||
});
|
||||
|
||||
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)}`);
|
||||
});
|
||||
|
||||
nms.run();
|
||||
|
||||
// Servidor web Express para la página
|
||||
const app = express();
|
||||
const WEB_PORT = 3000;
|
||||
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
||||
});
|
||||
|
||||
app.listen(WEB_PORT, () => {
|
||||
console.log('='.repeat(50));
|
||||
console.log('🐔 POLLETS STREAMING SERVER');
|
||||
console.log('='.repeat(50));
|
||||
console.log(`📺 Web del stream: http://localhost:${WEB_PORT}`);
|
||||
console.log(`📡 Servidor RTMP: rtmp://localhost:1935/live`);
|
||||
console.log(`🎬 Stream HTTP-FLV: http://localhost:8000/live/CLAVE.flv`);
|
||||
console.log('='.repeat(50));
|
||||
console.log('');
|
||||
console.log('📋 CONFIGURACIÓN PARA OBS:');
|
||||
console.log(' Servidor: rtmp://localhost/live');
|
||||
console.log(' Clave de retransmisión: pollets');
|
||||
console.log('');
|
||||
console.log(' (Para producción usar: rtmp://pollets.com.es/live)');
|
||||
console.log('='.repeat(50));
|
||||
});
|
||||
Reference in New Issue
Block a user