padlocal-client-ts
Version:
Padlocal ts client
78 lines • 3.04 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getVideoDurationSeconds = exports.createVideoThumb = exports.createImageThumb = exports.getImageSize = void 0;
function getImageSize(data) {
return __awaiter(this, void 0, void 0, function* () {
const jimp = require("jimp");
const image = yield jimp.read(data);
return {
width: image.getWidth(),
height: image.getHeight(),
};
});
}
exports.getImageSize = getImageSize;
function createImageThumb(data, maxWH) {
return __awaiter(this, void 0, void 0, function* () {
const jimp = require("jimp");
const image = yield jimp.read(data);
if (Math.max(image.getWidth(), image.getHeight()) > maxWH) {
if (image.getWidth() > image.getHeight()) {
yield image.resize(maxWH, jimp.AUTO);
}
else {
yield image.resize(jimp.AUTO, maxWH);
}
}
yield image.quality(40);
return yield image.getBufferAsync(jimp.MIME_JPEG);
});
}
exports.createImageThumb = createImageThumb;
let globalFFMpeg = undefined;
function getFFMpeg() {
if (globalFFMpeg === undefined) {
globalFFMpeg = require("./ffmpeg-mp4.js");
}
return globalFFMpeg;
}
function createVideoThumb(data, maxWH) {
return __awaiter(this, void 0, void 0, function* () {
const ffmpeg = getFFMpeg();
const result = ffmpeg({
print: function () { },
printErr: function () { },
MEMFS: [{ name: "input.mp4", data }],
arguments: [
"-i",
"input.mp4",
"-vframes",
"1",
"-q:v",
"10",
"-filter",
`scale=min(${maxWH}\\,a*${maxWH}):min(${maxWH}\\,${maxWH}/a)`,
"output.jpg",
],
});
const out = result.MEMFS[0];
return Buffer.from(out.data);
});
}
exports.createVideoThumb = createVideoThumb;
function getVideoDurationSeconds(data) {
const VideoLib = require("node-video-lib");
const movie = VideoLib.MovieParser.parse(data);
return Math.round(movie.relativeDuration());
}
exports.getVideoDurationSeconds = getVideoDurationSeconds;
//# sourceMappingURL=MediaUtils.js.map
;