nodejs-audio-visualizer 1.4.0 → 2.0.0

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.
package/README.md CHANGED
@@ -16,8 +16,8 @@ const config = {
16
16
  path: 'media/out.mp4',
17
17
  fps: 25, // Default value: 60
18
18
  spectrum: { // Audio spectrum configuration. Optional.
19
- width: 0.3, // 30% of background image width. Default value: 40%. Also you can use absolute values. For example, value 300 for 300 pixels width.
20
- height: 0.15, // 15% of background image height. Default value: 10%. Also you can use absolute values. For example, value 300 for 300 pixels height.
19
+ width: '30%', // 30% of background image width. Default value: 40%. Also you can use absolute values. For example, value 300 for 300 pixels width.
20
+ height: '15%', // 15% of background image height. Default value: 10%. Also you can use absolute values. For example, value 300 for 300 pixels height.
21
21
  x: 'center', // Available values: 'left', 'center', right'. Also you can use absolute number values. For example, value 300 for 300 pixels x.
22
22
  y: 'bottom', // Available values: 'top', 'middle', bottom'. Also you can use absolute number values. For example, value 300 for 300 pixels y.
23
23
  rotation: 'up', // Available values: 'up', 'down'. Default value: 'down'.
package/dist/config.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import { Config } from './index';
2
2
  export declare const defaults: {
3
3
  fps: number;
4
- spectrumWidth: number;
5
- spectrumHeight: number;
4
+ spectrumWidth: string;
5
+ spectrumHeight: string;
6
6
  spectrumX: string;
7
7
  spectrumY: string;
8
8
  spectrumRotation: string;
9
9
  };
10
10
  export declare const rotationAliasValues: readonly ["up", "down"];
11
+ export declare const checkIsPercentValue: (value: string) => boolean;
11
12
  export declare const getAudioFilePath: (config: Config) => string;
12
13
  export declare const getBackgroundImagePath: (config: Config) => string;
13
14
  export declare const getOutVideoPath: (config: Config) => string;
package/dist/config.js CHANGED
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var path_1 = __importDefault(require("path"));
7
7
  exports.defaults = {
8
8
  fps: 60,
9
- spectrumWidth: 0.4,
10
- spectrumHeight: 0.1,
9
+ spectrumWidth: '40%',
10
+ spectrumHeight: '10%',
11
11
  spectrumX: 'center',
12
12
  spectrumY: 'top',
13
13
  spectrumRotation: 'down'
@@ -21,8 +21,8 @@ var postitionAliases = [
21
21
  { name: 'bottom', value: 1 },
22
22
  ];
23
23
  exports.rotationAliasValues = ['up', 'down'];
24
- var checkIsInt = function (num) {
25
- return num % 1 === 0;
24
+ exports.checkIsPercentValue = function (value) {
25
+ return RegExp(/\d+%/).test(value);
26
26
  };
27
27
  exports.getAudioFilePath = function (config) {
28
28
  return path_1.default.resolve(config.audio.path);
@@ -40,13 +40,28 @@ var getSpectrumWidth = function (config) {
40
40
  return (config.outVideo.spectrum && config.outVideo.spectrum.width) ||
41
41
  exports.defaults.spectrumWidth;
42
42
  };
43
+ var getSpectrumSizeAbsolute = function (spectrumSize, backgroundImageSize) {
44
+ if (typeof spectrumSize === 'number') {
45
+ return spectrumSize;
46
+ }
47
+ var isPercentValue = exports.checkIsPercentValue(spectrumSize);
48
+ if (!isPercentValue) {
49
+ throw new Error();
50
+ }
51
+ var percentValue = parseInt(spectrumSize) / 100;
52
+ return backgroundImageSize * percentValue;
53
+ };
54
+ var getSpectrumSizeValueErrorMessage = function (fieldName, value) {
55
+ return "Invalid spectrum " + fieldName + " value: '" + value + "'. Use number value or percent value in string, for example: '30%'.";
56
+ };
43
57
  exports.getSpectrumWidthAbsolute = function (config, backgroundImageWidth) {
44
58
  var spectrumWidth = getSpectrumWidth(config);
45
- var isAbsoluteValue = checkIsInt(spectrumWidth);
46
- if (isAbsoluteValue) {
47
- return spectrumWidth;
59
+ try {
60
+ return getSpectrumSizeAbsolute(spectrumWidth, backgroundImageWidth);
61
+ }
62
+ catch (_a) {
63
+ throw new Error(getSpectrumSizeValueErrorMessage('width', spectrumWidth));
48
64
  }
49
- return backgroundImageWidth * spectrumWidth;
50
65
  };
51
66
  var getSpectrumHeight = function (config) {
52
67
  return (config.outVideo.spectrum && config.outVideo.spectrum.height) ||
@@ -54,11 +69,12 @@ var getSpectrumHeight = function (config) {
54
69
  };
55
70
  exports.getSpectrumHeightAbsolute = function (config, backgroundImageHeight) {
56
71
  var spectrumHeight = getSpectrumHeight(config);
57
- var isAbsoluteValue = checkIsInt(spectrumHeight);
58
- if (isAbsoluteValue) {
59
- return spectrumHeight;
72
+ try {
73
+ return getSpectrumSizeAbsolute(spectrumHeight, backgroundImageHeight);
74
+ }
75
+ catch (_a) {
76
+ throw new Error(getSpectrumSizeValueErrorMessage('height', spectrumHeight));
60
77
  }
61
- return backgroundImageHeight * spectrumHeight;
62
78
  };
63
79
  var getSpectrumX = function (config) {
64
80
  return parseNumberIfPossible((config.outVideo.spectrum && config.outVideo.spectrum.x) ||
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,8 +17,8 @@ export interface Config {
17
17
  path: string;
18
18
  fps?: number;
19
19
  spectrum?: {
20
- width?: number;
21
- height?: number;
20
+ width?: SpectrumSizeValue;
21
+ height?: SpectrumSizeValue;
22
22
  x?: number | PositionAliasName;
23
23
  y?: number | PositionAliasName;
24
24
  rotation?: RotationAliasName;
@@ -31,6 +31,7 @@ export interface Config {
31
31
  frame_processing_delay?: number;
32
32
  };
33
33
  }
34
+ export declare type SpectrumSizeValue = number | string;
34
35
  export declare type PositionAliasName = 'left' | 'center' | 'right' | 'top' | 'middle' | 'bottom';
35
36
  export declare type RotationAliasName = typeof rotationAliasValues[number];
36
37
  export declare const renderAudioVisualizer: (config: Config, onProgress?: ((progress: number) => any) | undefined, shouldStop?: (() => boolean) | undefined) => Promise<number>;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodejs-audio-visualizer",
3
- "version": "1.4.0",
3
+ "version": "2.0.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/config.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import path from 'path';
2
- import { Config, PositionAliasName, RotationAliasName } from './index';
2
+ import { Config, SpectrumSizeValue, PositionAliasName, RotationAliasName } from './index';
3
3
 
4
4
  export const defaults = {
5
5
  fps: 60,
6
- spectrumWidth: 0.4,
7
- spectrumHeight: 0.1,
6
+ spectrumWidth: '40%',
7
+ spectrumHeight: '10%',
8
8
  spectrumX: 'center',
9
9
  spectrumY: 'top',
10
10
  spectrumRotation: 'down'
@@ -28,8 +28,8 @@ const postitionAliases: PositionAlias[] = [
28
28
 
29
29
  export const rotationAliasValues = ['up', 'down'] as const;
30
30
 
31
- const checkIsInt = (num: number) =>
32
- num % 1 === 0;
31
+ export const checkIsPercentValue = (value: string) =>
32
+ RegExp(/\d+%/).test(value)
33
33
 
34
34
  export const getAudioFilePath = (config: Config) =>
35
35
  path.resolve(config.audio.path);
@@ -47,15 +47,34 @@ const getSpectrumWidth = (config: Config) =>
47
47
  (config.outVideo.spectrum && config.outVideo.spectrum.width) ||
48
48
  defaults.spectrumWidth;
49
49
 
50
+ const getSpectrumSizeAbsolute = (
51
+ spectrumSize: SpectrumSizeValue, backgroundImageSize: number
52
+ ) => {
53
+ if (typeof spectrumSize === 'number') {
54
+ return spectrumSize;
55
+ }
56
+ const isPercentValue = checkIsPercentValue(spectrumSize);
57
+ if (!isPercentValue) {
58
+ throw new Error();
59
+ }
60
+ const percentValue = parseInt(spectrumSize) / 100;
61
+ return backgroundImageSize * percentValue;
62
+ };
63
+
64
+ const getSpectrumSizeValueErrorMessage = (
65
+ fieldName: string, value: SpectrumSizeValue
66
+ ) =>
67
+ `Invalid spectrum ${fieldName} value: '${value}'. Use number value or percent value in string, for example: '30%'.`
68
+
50
69
  export const getSpectrumWidthAbsolute = (
51
70
  config: Config, backgroundImageWidth: number
52
71
  ) => {
53
72
  const spectrumWidth = getSpectrumWidth(config);
54
- const isAbsoluteValue = checkIsInt(spectrumWidth);
55
- if (isAbsoluteValue) {
56
- return spectrumWidth;
73
+ try {
74
+ return getSpectrumSizeAbsolute(spectrumWidth, backgroundImageWidth);
75
+ } catch {
76
+ throw new Error(getSpectrumSizeValueErrorMessage('width', spectrumWidth));
57
77
  }
58
- return backgroundImageWidth * spectrumWidth;
59
78
  };
60
79
 
61
80
  const getSpectrumHeight = (config: Config) =>
@@ -66,11 +85,11 @@ export const getSpectrumHeightAbsolute = (
66
85
  config: Config, backgroundImageHeight: number
67
86
  ) => {
68
87
  const spectrumHeight = getSpectrumHeight(config);
69
- const isAbsoluteValue = checkIsInt(spectrumHeight);
70
- if (isAbsoluteValue) {
71
- return spectrumHeight;
88
+ try {
89
+ return getSpectrumSizeAbsolute(spectrumHeight, backgroundImageHeight);
90
+ } catch {
91
+ throw new Error(getSpectrumSizeValueErrorMessage('height', spectrumHeight));
72
92
  }
73
- return backgroundImageHeight * spectrumHeight;
74
93
  };
75
94
 
76
95
  const getSpectrumX = (config: Config) =>
package/src/index.ts CHANGED
@@ -36,8 +36,8 @@ export interface Config {
36
36
  path: string;
37
37
  fps?: number;
38
38
  spectrum?: {
39
- width?: number;
40
- height?: number;
39
+ width?: SpectrumSizeValue;
40
+ height?: SpectrumSizeValue;
41
41
  x?: number | PositionAliasName;
42
42
  y?: number | PositionAliasName;
43
43
  rotation?: RotationAliasName;
@@ -51,6 +51,8 @@ export interface Config {
51
51
  };
52
52
  }
53
53
 
54
+ export type SpectrumSizeValue = number | string;
55
+
54
56
  export type PositionAliasName =
55
57
  'left' |
56
58
  'center' |
@@ -15,7 +15,8 @@ import {
15
15
  getFfmpeg_cfr,
16
16
  getFfmpeg_preset,
17
17
  getFrame_processing_delay,
18
- checkIsValidRotationAlias
18
+ checkIsValidRotationAlias,
19
+ checkIsPercentValue
19
20
  } from '../config';
20
21
 
21
22
  describe('config', function() {
@@ -55,13 +56,24 @@ describe('config', function() {
55
56
  expect(result2).equal(15);
56
57
  });
57
58
 
59
+ it('checkIsPercentValue', function() {
60
+ const result1 = checkIsPercentValue('69%');
61
+ expect(result1).equal(true);
62
+
63
+ const result2 = checkIsPercentValue('69');
64
+ expect(result2).equal(false);
65
+
66
+ const result3 = checkIsPercentValue('fake value');
67
+ expect(result3).equal(false);
68
+ });
69
+
58
70
  it('getSpectrumWidthAbsolute', function() {
59
71
  const backgroundImageWidth = 1366;
60
72
  const result1 = getSpectrumWidthAbsolute({
61
73
  outVideo: {}
62
74
  } as Config, backgroundImageWidth);
63
75
  expect(result1).equal(
64
- backgroundImageWidth * defaults.spectrumWidth
76
+ backgroundImageWidth * (parseInt(defaults.spectrumWidth) / 100)
65
77
  );
66
78
 
67
79
  const result2 = getSpectrumWidthAbsolute({
@@ -70,9 +82,18 @@ describe('config', function() {
70
82
  expect(result2).equal(420);
71
83
 
72
84
  const result3 = getSpectrumWidthAbsolute({
73
- outVideo: { spectrum: { width: 0.69 }}
85
+ outVideo: { spectrum: { width: '69%' }}
74
86
  } as Config, backgroundImageWidth);
75
87
  expect(result3).equal(backgroundImageWidth * 0.69);
88
+
89
+ const result4 = getSpectrumWidthAbsolute.bind(
90
+ undefined,
91
+ {
92
+ outVideo: { spectrum: { width: '69' }}
93
+ } as Config,
94
+ backgroundImageWidth
95
+ );
96
+ expect(result4).to.throw('Invalid spectrum width value: \'69\'. Use number value or percent value in string, for example: \'30%\'.');
76
97
  });
77
98
 
78
99
  it('getSpectrumHeightAbsolute', function() {
@@ -81,7 +102,7 @@ describe('config', function() {
81
102
  outVideo: {}
82
103
  } as Config, backgroundImageHeight);
83
104
  expect(result1).equal(
84
- backgroundImageHeight * defaults.spectrumHeight
105
+ backgroundImageHeight * (parseInt(defaults.spectrumHeight) / 100)
85
106
  );
86
107
 
87
108
  const result2 = getSpectrumHeightAbsolute({
@@ -90,9 +111,18 @@ describe('config', function() {
90
111
  expect(result2).equal(420);
91
112
 
92
113
  const result3 = getSpectrumHeightAbsolute({
93
- outVideo: { spectrum: { height: 0.69 }}
114
+ outVideo: { spectrum: { height: '69%' }}
94
115
  } as Config, backgroundImageHeight);
95
116
  expect(result3).equal(backgroundImageHeight * 0.69);
117
+
118
+ const result4 = getSpectrumHeightAbsolute.bind(
119
+ undefined,
120
+ {
121
+ outVideo: { spectrum: { height: '69' }}
122
+ } as Config,
123
+ backgroundImageHeight
124
+ );
125
+ expect(result4).to.throw('Invalid spectrum height value: \'69\'. Use number value or percent value in string, for example: \'30%\'.');
96
126
  });
97
127
 
98
128
  it('getSpectrumXAbsolute', function() {
@@ -2,6 +2,9 @@ import { expect } from 'chai';
2
2
  import path from 'path';
3
3
  import { drawRect, Color, createVisualizerFrame, parseImage, convertToBmp } from '../image';
4
4
 
5
+ import frameSnapshotSpectrumDown from './snapshots/frameSnapshotSpectrumDown.json';
6
+ import frameSnapshotSpectrumUp from './snapshots/frameSnapshotSpectrumUp.json';
7
+
5
8
  describe('image', function () {
6
9
  it('drawRect', function () {
7
10
  const imageWidth = 10;
@@ -32,7 +35,7 @@ describe('image', function () {
32
35
  const backgroundImagePath = path.resolve('example/media/background.png');
33
36
  const backgroundImageBmpBuffer = await convertToBmp(backgroundImagePath);
34
37
  const backgroundImage = parseImage(backgroundImageBmpBuffer);
35
- const frame = createVisualizerFrame(
38
+ const frameSpectrumDown = createVisualizerFrame(
36
39
  backgroundImage,
37
40
  [0.5, 0, 1],
38
41
  { width: 15, height: 20 },
@@ -40,6 +43,18 @@ describe('image', function () {
40
43
  'down',
41
44
  { red: 1, green: 1, blue: 1 }
42
45
  );
43
- expect(frame.data.toJSON().data.length).equal(1090560);
46
+ const resultSpectrumDown = frameSpectrumDown.data.toJSON().data;
47
+ expect(resultSpectrumDown).deep.equal(frameSnapshotSpectrumDown);
48
+
49
+ const frameSpectrumUp = createVisualizerFrame(
50
+ backgroundImage,
51
+ [0.1, 1, 0],
52
+ { width: 25, height: 23 },
53
+ { x: 10, y: 5 },
54
+ 'up',
55
+ { red: 0, green: 123, blue: 69 }
56
+ );
57
+ const resultSpectrumUp = frameSpectrumUp.data.toJSON().data;
58
+ expect(resultSpectrumUp).deep.equal(frameSnapshotSpectrumUp);
44
59
  });
45
60
  });