clhq-ffmpeg-module 1.1.0-alpha.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ import ffmpeg from 'fluent-ffmpeg';
2
+ export default ffmpeg;
package/dist/common.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fluent_ffmpeg_1 = __importDefault(require("fluent-ffmpeg"));
7
+ const os_1 = __importDefault(require("os"));
8
+ if (os_1.default.platform() === 'win32') {
9
+ const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
10
+ const ffprobePath = require('@ffprobe-installer/ffprobe').path;
11
+ fluent_ffmpeg_1.default.setFfmpegPath(ffmpegPath);
12
+ fluent_ffmpeg_1.default.setFfprobePath(ffprobePath);
13
+ }
14
+ else {
15
+ fluent_ffmpeg_1.default.setFfmpegPath(process.env.FFMPEG_PATH);
16
+ fluent_ffmpeg_1.default.setFfprobePath(process.env.FFPROBE_PATH);
17
+ }
18
+ exports.default = fluent_ffmpeg_1.default;
@@ -0,0 +1,2 @@
1
+ export declare class FfmpegModule {
2
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FfmpegModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const ffmpeg_service_1 = require("./ffmpeg.service");
12
+ let FfmpegModule = class FfmpegModule {
13
+ };
14
+ exports.FfmpegModule = FfmpegModule;
15
+ exports.FfmpegModule = FfmpegModule = __decorate([
16
+ (0, common_1.Module)({
17
+ providers: [ffmpeg_service_1.FfmpegService],
18
+ exports: [ffmpeg_service_1.FfmpegService],
19
+ })
20
+ ], FfmpegModule);
@@ -0,0 +1,9 @@
1
+ export declare class FfmpegService {
2
+ private readonly isDev;
3
+ private readonly logger;
4
+ constructor();
5
+ transcode(input: string, output: string, options?: any): Promise<void>;
6
+ generateThumbs(filePath: any, fileName: any, outputpath: any): Promise<unknown>;
7
+ getMetadata(filePath: any): Promise<unknown>;
8
+ generateThumbsPerSeconds(filePath: any, fileName: any, outputpath: any, second?: number): Promise<unknown>;
9
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var FfmpegService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.FfmpegService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const common_2 = __importDefault(require("./common"));
19
+ let FfmpegService = FfmpegService_1 = class FfmpegService {
20
+ isDev;
21
+ logger = new common_1.Logger(FfmpegService_1.name);
22
+ constructor() {
23
+ }
24
+ transcode(input, output, options = {}) {
25
+ return new Promise((resolve, reject) => {
26
+ (0, common_2.default)(input)
27
+ .output(output)
28
+ .on('end', () => resolve())
29
+ .on('error', (err) => reject(err))
30
+ .run();
31
+ });
32
+ }
33
+ async generateThumbs(filePath, fileName, outputpath) {
34
+ this.logger.debug('running ffmpeg process');
35
+ return new Promise((resolve, reject) => {
36
+ (0, common_2.default)(filePath)
37
+ .outputOptions('-frames', '1')
38
+ .seekInput('00:01.000')
39
+ .on('end', function () {
40
+ this.logger.debug('Screenshot taken');
41
+ resolve(null);
42
+ return null;
43
+ })
44
+ .on('error', (err) => {
45
+ return reject(err);
46
+ })
47
+ .save(outputpath)
48
+ .run();
49
+ });
50
+ }
51
+ async getMetadata(filePath) {
52
+ this.logger.debug('get video metadata');
53
+ return new Promise((resolve, reject) => {
54
+ common_2.default.ffprobe(filePath, function (err, metadata) {
55
+ if (err) {
56
+ return reject(err);
57
+ }
58
+ console.log(metadata);
59
+ const { streams } = metadata;
60
+ const firstStream = (Array.isArray(streams) && streams.length > 0 && streams[0]) || {};
61
+ const { height, width, duration } = firstStream;
62
+ return resolve({ duration, height, width });
63
+ });
64
+ });
65
+ }
66
+ async generateThumbsPerSeconds(filePath, fileName, outputpath, second = 10) {
67
+ this.logger.debug('running ffmpeg process');
68
+ return new Promise((resolve, reject) => {
69
+ (0, common_2.default)(filePath)
70
+ .output(outputpath)
71
+ .outputOptions('-q:v', '2', '-vf', `fps=1/${second}`)
72
+ .on('end', function () {
73
+ this.logger.debug('Screenshot taken');
74
+ resolve(null);
75
+ return null;
76
+ })
77
+ .on('error', (err) => {
78
+ return reject(err);
79
+ })
80
+ .run();
81
+ });
82
+ }
83
+ };
84
+ exports.FfmpegService = FfmpegService;
85
+ exports.FfmpegService = FfmpegService = FfmpegService_1 = __decorate([
86
+ (0, common_1.Injectable)(),
87
+ __metadata("design:paramtypes", [])
88
+ ], FfmpegService);
@@ -0,0 +1,2 @@
1
+ export * from './ffmpeg.module';
2
+ export * from './ffmpeg.service';
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ffmpeg.module"), exports);
18
+ __exportStar(require("./ffmpeg.service"), exports);
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "clhq-ffmpeg-module",
3
+ "version": "1.1.0-alpha.90",
4
+ "description": "Reusable FFmpeg module for NestJS.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist/**/*"
9
+ ],
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/reacthub-pricematch/clhq-api-monorepo"
13
+ },
14
+ "registry": "https://registry.npmjs.org/",
15
+ "publishConfig": {
16
+ "registry": "https://registry.npmjs.org/",
17
+ "access": "public"
18
+ },
19
+ "bugs": {
20
+ "url": "https://github.com/reacthub-pricematch/clhq-api-monorepo/issues"
21
+ },
22
+ "license": "MIT",
23
+ "scripts": {
24
+ "build": "yarn exec tsc -p tsconfig.json",
25
+ "test": "jest",
26
+ "format": "prettier --write \"src/**/*.ts\"",
27
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
28
+ "clean:build": "rimraf .build",
29
+ "clean:dist": "rimraf dist",
30
+ "clean:webpack": "rimraf .webpack",
31
+ "clean:serverless": "rimraf .serverless",
32
+ "clean:all": "npm run clean:build&& npm run clean:dist&& npm run clean:webpack&& npm run clean:serverless",
33
+ "version:upgrade:alpha": "standard-version --prerelease alpha",
34
+ "release": "npm publish --tag alpha",
35
+ "release:alpha": "npm publish --tag alpha",
36
+ "release:prealpha": ""
37
+ },
38
+ "peerDependencies": {
39
+ "@nestjs/common": ">=10.0.0",
40
+ "@nestjs/config": ">=2.2.0",
41
+ "@nestjs/core": ">=10.0.0"
42
+ },
43
+ "devDependencies": {
44
+ "@ffmpeg-installer/ffmpeg": "^1.1.0",
45
+ "fluent-ffmpeg": "^2.1.2",
46
+ "reflect-metadata": "^0.2.2",
47
+ "rxjs": "^7.8.1",
48
+ "standard-version": "^9.5.0"
49
+ }
50
+ }