express-bitrate-streamer
Version:
Express-based HLS multi-bitrate streaming backend + tiny frontend player.
32 lines (26 loc) • 1.18 kB
JavaScript
import { Command } from 'commander';
import path from 'node:path';
import createFFmpegIngest from '../src/server/ffmpeg.js';
import createCleaner from '../src/server/cleaner.js';
const program = new Command();
program
.name('express-bitrate-streamer')
.description('Ingest a video/audio source and generate HLS multi-bitrate outputs')
.version('1.0.0');
program.command('ingest')
.argument('<input>', 'input file/url/rtmp')
.option('-s, --stream <id>', 'stream id')
.option('--live', 'treat as live source', false)
.option('--out <dir>', 'output root (default: streams-data)')
.action(async (input, opts) => {
const ff = createFFmpegIngest({
outputRoot: opts.out || 'streams-data'
});
const streamId = opts.stream || path.basename(input, path.extname(input));
await ff.ingest(input, streamId, { live: !!opts.live });
const cleaner = createCleaner({ outputRoot: opts.out || 'streams-data' });
cleaner.start(streamId);
console.log(`✅ Ingested to /streams/${streamId}/master.m3u8`);
});
program.parse(process.argv);