Tonight
This commit is contained in:
parent
28323f145e
commit
94f9c0d594
76 changed files with 3238 additions and 1230 deletions
|
|
@ -1,12 +1,6 @@
|
|||
import { execSync } from 'node:child_process';
|
||||
import { renameSync, statSync } from 'node:fs';
|
||||
import {
|
||||
MAX_DURATION_S,
|
||||
OUTPUT_FPS,
|
||||
RECORD_SCALE,
|
||||
VIDEO_SIZE,
|
||||
WEBM_BITRATE,
|
||||
} from './config.js';
|
||||
import { MAX_DURATION_S, OUTPUT_FPS, VIDEO_SIZE, WEBM_BITRATE } from './config.js';
|
||||
|
||||
const LEAD_IN_S = 0.12;
|
||||
|
||||
|
|
@ -18,11 +12,11 @@ export function trimRecording(
|
|||
const sceneSpan = (times.sceneEndMs - times.sceneStartMs) / 1000;
|
||||
const trimStart = Math.max(
|
||||
0,
|
||||
(times.sceneStartMs - times.recordStartMs) / 1000 - LEAD_IN_S * RECORD_SCALE
|
||||
(times.sceneStartMs - times.recordStartMs) / 1000 - LEAD_IN_S
|
||||
);
|
||||
const trimEnd = (times.sceneEndMs - times.recordStartMs) / 1000;
|
||||
const wallDuration = trimEnd - trimStart;
|
||||
const finalDuration = wallDuration / RECORD_SCALE;
|
||||
const finalDuration = wallDuration;
|
||||
|
||||
if (finalDuration > MAX_DURATION_S) {
|
||||
console.log(
|
||||
|
|
@ -32,12 +26,11 @@ export function trimRecording(
|
|||
|
||||
const filter =
|
||||
`trim=start=${trimStart.toFixed(3)}:duration=${wallDuration.toFixed(3)},` +
|
||||
`setpts=(PTS-STARTPTS)/${RECORD_SCALE},fps=${OUTPUT_FPS},` +
|
||||
`setpts=PTS-STARTPTS,fps=${OUTPUT_FPS},` +
|
||||
`trim=duration=${finalDuration.toFixed(3)},setpts=PTS-STARTPTS`;
|
||||
|
||||
// Keep trimming inside the filter graph: it is frame-accurate for WebM
|
||||
// without the keyframe leakage of input seeking or the post-speedup timing
|
||||
// ambiguity of output seeking.
|
||||
// without the keyframe leakage of input seeking.
|
||||
execSync(
|
||||
`ffmpeg -y -i "${rawPath}" -vf "${filter}" ` +
|
||||
`-fps_mode cfr -r ${OUTPUT_FPS} -c:v libvpx -b:v ${WEBM_BITRATE} -deadline good -cpu-used 5 ` +
|
||||
|
|
@ -53,6 +46,6 @@ export function trimRecording(
|
|||
}
|
||||
|
||||
console.log(
|
||||
`Wrote ${trimmedPath} (${finalDuration.toFixed(2)}s, scene=${(sceneSpan / RECORD_SCALE).toFixed(2)}s, scale=${RECORD_SCALE}, capture=${VIDEO_SIZE.width}x${VIDEO_SIZE.height})`
|
||||
`Wrote ${trimmedPath} (${finalDuration.toFixed(2)}s, scene=${sceneSpan.toFixed(2)}s, capture=${VIDEO_SIZE.width}x${VIDEO_SIZE.height})`
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue