add an unfinished waveform alternative implementation

pull/289/head
Mikael Finstad 6 years ago
parent a6128c51f0
commit 62151d1582

@ -631,6 +631,33 @@ export async function renderFrame(timestamp, filePath, rotation) {
return URL.createObjectURL(blob);
}
export async function extractWaveform({ filePath, outPath }) {
const numSegs = 10;
const duration = 60 * 60;
const maxLen = 0.1;
const segments = Array(numSegs).fill().map((unused, i) => [i * (duration / numSegs), Math.min(duration / numSegs, maxLen)]);
// https://superuser.com/questions/681885/how-can-i-remove-multiple-segments-from-a-video-using-ffmpeg
let filter = segments.map(([from, len], i) => `[0:a]atrim=start=${from}:end=${from + len},asetpts=PTS-STARTPTS[a${i}]`).join(';');
filter += ';';
filter += segments.map((arr, i) => `[a${i}]`).join('');
filter += `concat=n=${segments.length}:v=0:a=1[out]`;
console.time('ffmpeg');
await runFfmpeg([
'-i',
filePath,
'-filter_complex',
filter,
'-map',
'[out]',
'-f', 'wav',
'-y',
outPath,
]);
console.timeEnd('ffmpeg');
}
// see capture-frame.js
export async function captureFrame({ timestamp, videoPath, outPath }) {
const args = [

Loading…
Cancel
Save