Added executable
Added controller file to launch other processes Moved compile dir to buildmerge-requests/1/merge
parent
4309da7c39
commit
d05c59c896
|
@ -1,5 +1,4 @@
|
|||
node_modules
|
||||
media
|
||||
server.js
|
||||
chanbot.js
|
||||
build/**
|
||||
lib/inspircd-*
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env node
|
||||
const satyr = require("./build/controller");
|
||||
satyr.boot();
|
|
@ -0,0 +1,29 @@
|
|||
import * as mediaserver from "./server";
|
||||
function boot(): void{
|
||||
const mediaconfig: any = {
|
||||
rtmp: {
|
||||
port: 1935,
|
||||
chunk_size: 60000,
|
||||
gop_cache: true,
|
||||
ping: 30,
|
||||
ping_timeout: 60
|
||||
},
|
||||
http: {
|
||||
port:8000,
|
||||
allow_origin: '*',
|
||||
mediaroot: './media'
|
||||
},
|
||||
trans: {
|
||||
ffmpeg: '/usr/bin/ffmpeg',
|
||||
tasks: [
|
||||
{
|
||||
app: 'live',
|
||||
hls: 'true',
|
||||
hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]'
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
mediaserver.boot(mediaconfig);
|
||||
}
|
||||
export { boot };
|
|
@ -1,34 +1,13 @@
|
|||
import NodeMediaServer = require('node-media-server');
|
||||
import fs = require('fs');
|
||||
import * as NodeMediaServer from "node-media-server";
|
||||
import { mkdir } from "fs";
|
||||
const { exec } = require('child_process');
|
||||
|
||||
//initialize configs, eventually grab from runtime config file
|
||||
const mediaconfig = {
|
||||
rtmp: {
|
||||
port: 1935,
|
||||
chunk_size: 60000,
|
||||
gop_cache: true,
|
||||
ping: 30,
|
||||
ping_timeout: 60
|
||||
},
|
||||
http: {
|
||||
port:8000,
|
||||
allow_origin: '*',
|
||||
mediaroot: './media'
|
||||
},
|
||||
trans: {
|
||||
ffmpeg: '/usr/bin/ffmpeg',
|
||||
tasks: [
|
||||
{
|
||||
app: 'live',
|
||||
hls: 'true',
|
||||
hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]'
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
function initConfig(): void{
|
||||
;
|
||||
}
|
||||
|
||||
function streamAuth(path: string){
|
||||
/*function streamAuth(path: string){
|
||||
if (path.split("/").length > 3){
|
||||
console.log("[NodeMediaServer] Malformed URL, closing connection.");
|
||||
return false;
|
||||
|
@ -47,14 +26,14 @@ function streamAuth(path: string){
|
|||
}
|
||||
console.log("[NodeMediaServer] Stream key ok.");
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
function boot (config: any){
|
||||
const nms = new NodeMediaServer(config);
|
||||
|
||||
const nms = new NodeMediaServer(mediaconfig);
|
||||
nms.run();
|
||||
|
||||
nms.run();
|
||||
|
||||
nms.on('prePublish', (id, StreamPath, args) => {
|
||||
nms.on('prePublish', (id, StreamPath, args) => {
|
||||
console.log("[NodeMediaServer] Prepublish Hook for stream id=",id);
|
||||
let session = nms.getSession(id);
|
||||
if (StreamPath.split("/").length > 3){
|
||||
|
@ -79,14 +58,14 @@ nms.on('prePublish', (id, StreamPath, args) => {
|
|||
}
|
||||
console.log("[NodeMediaServer] Stream key ok.");
|
||||
session.publishStreamPath = "/live/amy";
|
||||
});
|
||||
});
|
||||
|
||||
nms.on('postPublish', (id, StreamPath, args) => {
|
||||
nms.on('postPublish', (id, StreamPath, args) => {
|
||||
console.log('[NodeMediaServer] Checking record flag for ', `id=${id} StreamPath=${StreamPath}`);
|
||||
//Hook up to postgres DB.
|
||||
if(true){
|
||||
console.log('[NodeMediaServer] Initiating recording for ', `id=${id} StreamPath=${StreamPath}`);
|
||||
fs.mkdir('./media'+StreamPath, { recursive : true }, (err) => {
|
||||
mkdir('./media'+StreamPath, { recursive : true }, (err) => {
|
||||
if (err) throw err;
|
||||
});
|
||||
let subprocess = exec('ffmpeg -i rtmp://127.0.0.1'+StreamPath+' -vcodec copy -acodec copy ./media'+StreamPath+'/$(date +%d%b%Y-%H%M).mp4',{
|
||||
|
@ -98,4 +77,6 @@ nms.on('postPublish', (id, StreamPath, args) => {
|
|||
return true;
|
||||
}
|
||||
console.log('[NodeMediaServer] Skipping recording for ', `id=${id} StreamPath=${StreamPath}`);
|
||||
});
|
||||
});
|
||||
}
|
||||
export { boot };
|
|
@ -1,13 +1,9 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"outDir":".",
|
||||
"outDir":"./build",
|
||||
"allowJs":true
|
||||
},
|
||||
"include":[
|
||||
"src/**/*"
|
||||
],
|
||||
"exclude":[
|
||||
"node_modules",
|
||||
"lib"
|
||||
]
|
||||
}
|
||||
|
|
Reference in New Issue