@calipsa/video-utils
Version:
Video utilities
46 lines • 1.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const fluent_ffmpeg_1 = __importDefault(require("fluent-ffmpeg"));
const tmp_promise_1 = __importDefault(require("tmp-promise"));
const inputToBuffer_1 = __importDefault(require("./inputToBuffer"));
const buffersToStream_1 = __importDefault(require("./buffersToStream"));
exports.default = async (images, fps) => {
const imageBufferPromises = images.map(inputToBuffer_1.default);
const imageBuffers = await Promise.all(imageBufferPromises);
const imagesStream = (0, buffersToStream_1.default)(imageBuffers);
const { path, cleanup } = await tmp_promise_1.default.file();
try {
await new Promise((resolve, reject) => {
const proc = (0, fluent_ffmpeg_1.default)(imagesStream)
.withInputFps(fps)
.output(path, { end: true })
.withFpsOutput(fps)
.noAudio()
.format('mp4') // -f
.videoCodec('libx264') // -vcodec
.size('640x480')
.outputOption('-pix_fmt', 'yuv420p')
.outputOption('-tune', 'zerolatency')
.outputOption('-preset', 'ultrafast')
.outputOption('-movflags', 'faststart')
// .outputOption('-q:v', '2')
.on('error', reject)
// .on('start', commandLine => {
// console.log(`Spawned Ffmpeg with command: ${commandLine}`)
// })
.on('end', () => {
resolve();
});
proc.run();
});
return fs_1.default.promises.readFile(path, null);
}
finally {
cleanup();
}
};
//# sourceMappingURL=convert.js.map