Browse Source

Add version check #34

new-features-2020
Mikael Finstad 6 years ago
parent
commit
21be77cc28
  1. 20
      ffmpeg.js
  2. 4
      index.js

20
ffmpeg.js

@ -1,4 +1,7 @@
const fs = require('fs-extra');
const execa = require('execa');
const assert = require('assert');
const gte = require('semver/functions/gte');
const getFfmpegCommonArgs = ({ enableFfmpegLog }) => (enableFfmpegLog ? [] : ['-hide_banner', '-loglevel', 'error']);
@ -11,9 +14,26 @@ async function createConcatFile(segments, concatFilePath) {
await fs.writeFile(concatFilePath, segments.map((seg) => `file '${seg.replace(/'/g, "'\\''")}'`).join('\n'));
}
async function testFf(exePath, name) {
const requiredVersion = '4.3.1';
try {
const { stdout } = await execa(exePath, ['-version']);
const firstLine = stdout.split('\n')[0];
const match = firstLine.match(`${name} version ([0-9.]+)`);
assert(match, 'Unknown version string');
const versionStr = match[1];
console.log(`${name} version ${versionStr}`);
assert(gte(versionStr, requiredVersion), 'Version is outdated');
} catch (err) {
console.error(`WARNING: ${name} issue:`, err.message);
}
}
module.exports = {
getFfmpegCommonArgs,
getCutFromArgs,
getCutToArgs,
createConcatFile,
testFf,
};

4
index.js

@ -5,6 +5,7 @@ const JSON5 = require('json5');
const fs = require('fs-extra');
const { nanoid } = require('nanoid');
const { testFf } = require('./ffmpeg');
const { parseFps, multipleOf2 } = require('./util');
const { createFabricCanvas, rgbaToFabricImage, getNodeCanvasFromFabricCanvas } = require('./sources/fabric');
const { createFrameSource } = require('./sources/frameSource');
@ -43,6 +44,9 @@ const Editly = async (config = {}) => {
ffprobePath = 'ffprobe',
} = config;
await testFf(ffmpegPath, 'ffmpeg');
await testFf(ffprobePath, 'ffprobe');
const isGif = outPath.toLowerCase().endsWith('.gif');
if (backgroundAudioPath) await assertFileValid(backgroundAudioPath, allowRemoteRequests);

Loading…
Cancel
Save