demrec
NodeJS wrapper for SourceVideoRender!
Usage
let DemRec = require('demrec')
let dr = new DemRec('config.ini')
let Events = Object.keys(DemRec.Events)
dr.on('log', data => {
console.log(`EVENT: ${Events[data.event]}`)
})
await dr.launch()
await dr.record('cooldemo.dem', {
ticks: [300, 1800],
spec: 'soupcan',
cmd: 'mat_fullbright 1; volume 0.2',
out: 'soupcan_does_cool_stuff'
}, 'output')
await dr.record('Z:/demos/auto-20200724-224342-jump_haze.dem', [
{
ticks: [12710, 14067],
spec: 'STEAM_0:0:443798979',
out: 'toss_bonus1'
},
{
ticks: [14359, 15936],
spec: 'STEAM_0:0:443798979',
out: 'toss_bonus2'
},
{
ticks: [19334, 20723],
spec: 'STEAM_0:1:50458194',
cmd: 'spec_mode 5',
out: 'tom_wallclimbing'
},
{
ticks: [21051, 22219],
spec: 'STEAM_0:1:50458194'
}
], 'output')
await dr.exit()
FFMPEG configuration
The default configuration in config.ini
simply merges the resulting mp4 & wav files into a single mp4.
If you remove the FFMPEG section entirely, output of dr.record will contain both files instead.
You can add additional FFMPEG jobs like this:
[FFMPEG]
-i "%INPUT%.mp4"
-i "%INPUT%.wav"
-c:v copy
-c:a aac
"%NEXT%.mp4"
[FFMPEG]
-i "%PREV%.mp4"
-vf "vignette=angle=0.5"
"%OUT%.mp4"
It is also possible to add custom FFMPEG args during the render. This one can only exist once and input/output args are skipped:
[FFMPEG RECORD]
-crf 20
-vf "vignette=angle=0.5"