From 2fc8e913b1ae2272ce03c205495c0088a162cedf Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Tue, 13 Oct 2020 12:50:15 +0200 Subject: [PATCH] rename to speedFactor --- audio.js | 10 +++++----- ffmpeg.js | 2 +- parseConfig.js | 14 +++++++------- sources/videoFrameSource.js | 10 +++++----- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/audio.js b/audio.js index b80a6ba..73f8400 100644 --- a/audio.js +++ b/audio.js @@ -39,7 +39,7 @@ module.exports = ({ ffmpegPath, ffprobePath, enableFfmpegLog, verbose }) => { if (audioLayers.length > 0) { const processedAudioLayersRaw = await pMap(audioLayers, async (audioLayer, j) => { - const { path, cutFrom, audioCutTo, framePtsFactor } = audioLayer; + const { path, cutFrom, audioCutTo, speedFactor } = audioLayer; const streams = await readFileStreams(ffprobePath, path); if (!streams.some((s) => s.codec_type === 'audio')) return undefined; @@ -48,9 +48,9 @@ module.exports = ({ ffmpegPath, ffprobePath, enableFfmpegLog, verbose }) => { try { let atempoFilter; - if (Math.abs(framePtsFactor - 1) > 0.01) { - if (verbose) console.log('audio framePtsFactor', framePtsFactor); - const atempo = (1 / framePtsFactor); + if (Math.abs(speedFactor - 1) > 0.01) { + if (verbose) console.log('audio speedFactor', speedFactor); + const atempo = (1 / speedFactor); if (!(atempo >= 0.5 && atempo <= 100)) { // Required range by ffmpeg console.warn(`Audio speed ${atempo} is outside accepted range, using silence (clip ${i})`); return undefined; @@ -58,7 +58,7 @@ module.exports = ({ ffmpegPath, ffprobePath, enableFfmpegLog, verbose }) => { atempoFilter = `atempo=${atempo}`; } - const cutToArg = (audioCutTo - cutFrom) * framePtsFactor; + const cutToArg = (audioCutTo - cutFrom) * speedFactor; const args = [ ...getFfmpegCommonArgs({ enableFfmpegLog }), diff --git a/ffmpeg.js b/ffmpeg.js index eb47ed1..1c4815a 100644 --- a/ffmpeg.js +++ b/ffmpeg.js @@ -4,7 +4,7 @@ const getFfmpegCommonArgs = ({ enableFfmpegLog }) => (enableFfmpegLog ? [] : ['- const getCutFromArgs = ({ cutFrom }) => (cutFrom ? ['-ss', cutFrom] : []); -const getCutToArgs = ({ cutTo, cutFrom, framePtsFactor }) => (cutTo ? ['-t', (cutTo - cutFrom) * framePtsFactor] : []); +const getCutToArgs = ({ cutTo, cutFrom, speedFactor }) => (cutTo ? ['-t', (cutTo - cutFrom) * speedFactor] : []); async function createConcatFile(segments, concatFilePath) { // https://superuser.com/questions/787064/filename-quoting-in-ffmpeg-concat diff --git a/parseConfig.js b/parseConfig.js index 886c8f5..6fba1dc 100644 --- a/parseConfig.js +++ b/parseConfig.js @@ -154,7 +154,7 @@ async function parseConfig({ defaults: defaultsIn = {}, clips, allowRemoteReques // This feature allows the user to show another layer overlayed (or replacing) parts of the lower layers (visibleFrom - visibleUntil) const visibleDuration = ((visibleUntil || clipDuration) - visibleFrom); assert(visibleDuration > 0 && visibleDuration <= clipDuration, `Invalid visibleFrom ${visibleFrom} or visibleUntil ${visibleUntil} (${clipDuration})`); - // TODO Also need to handle video layers (framePtsFactor etc) + // TODO Also need to handle video layers (speedFactor etc) // TODO handle audio in case of visibleFrom/visibleTo const layer = { ...layerIn, visibleFrom, visibleDuration }; @@ -176,28 +176,28 @@ async function parseConfig({ defaults: defaultsIn = {}, clips, allowRemoteReques const inputDuration = cutTo - cutFrom; - const framePtsFactor = clipDuration / inputDuration; + const speedFactor = clipDuration / inputDuration; // Compensate for transition duration const audioCutTo = Math.max(cutFrom, cutTo - transition.duration); - return { ...layer, cutFrom, cutTo, audioCutTo, framePtsFactor }; + return { ...layer, cutFrom, cutTo, audioCutTo, speedFactor }; } if (layer.type === 'video') { const { inputDuration } = layer; - let framePtsFactor; + let speedFactor; // If user explicitly specified duration for clip, it means that should be the output duration of the video if (userClipDuration) { // Later we will speed up or slow down video using this factor - framePtsFactor = userClipDuration / inputDuration; + speedFactor = userClipDuration / inputDuration; } else { - framePtsFactor = 1; + speedFactor = 1; } - return { ...layer, framePtsFactor }; + return { ...layer, speedFactor }; } return layer; diff --git a/sources/videoFrameSource.js b/sources/videoFrameSource.js index 8021b9b..b67b460 100644 --- a/sources/videoFrameSource.js +++ b/sources/videoFrameSource.js @@ -6,7 +6,7 @@ const { readFileStreams } = require('../util'); const { rgbaToFabricImage, blurImage } = require('./fabric'); module.exports = async ({ width: canvasWidth, height: canvasHeight, channels, framerateStr, verbose, logTimes, ffmpegPath, ffprobePath, enableFfmpegLog, params }) => { - const { path, cutFrom, cutTo, resizeMode = 'contain-blur', framePtsFactor, inputWidth, inputHeight, width: requestedWidthRel, height: requestedHeightRel, left: leftRel = 0, top: topRel = 0, originX = 'left', originY = 'top' } = params; + const { path, cutFrom, cutTo, resizeMode = 'contain-blur', speedFactor, inputWidth, inputHeight, width: requestedWidthRel, height: requestedHeightRel, left: leftRel = 0, top: topRel = 0, originX = 'left', originY = 'top' } = params; const requestedWidth = requestedWidthRel ? requestedWidthRel * canvasWidth : canvasWidth; const requestedHeight = requestedHeightRel ? requestedHeightRel * canvasHeight : canvasHeight; @@ -40,9 +40,9 @@ module.exports = async ({ width: canvasWidth, height: canvasHeight, channels, fr // let inFrameCount = 0; let ptsFilter = ''; - if (framePtsFactor !== 1) { - if (verbose) console.log('framePtsFactor', framePtsFactor); - ptsFilter = `setpts=${framePtsFactor}*PTS,`; + if (speedFactor !== 1) { + if (verbose) console.log('speedFactor', speedFactor); + ptsFilter = `setpts=${speedFactor}*PTS,`; } let scaleFilter; @@ -67,7 +67,7 @@ module.exports = async ({ width: canvasWidth, height: canvasHeight, channels, fr ...(inputCodec ? ['-vcodec', inputCodec] : []), ...(cutFrom ? ['-ss', cutFrom] : []), '-i', path, - ...(cutTo ? ['-t', (cutTo - cutFrom) * framePtsFactor] : []), + ...(cutTo ? ['-t', (cutTo - cutFrom) * speedFactor] : []), '-vf', `${ptsFilter}fps=${framerateStr},${scaleFilter}`, '-map', 'v:0', '-vcodec', 'rawvideo',