@zwa73/utils 1.0.158 → 1.0.160

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.
@@ -72,11 +72,16 @@ class SFfmpegTool {
72
72
  static async flac2ogg(inputFlacFile, outputOggPath, quality = 10) {
73
73
  let wavPath = pathe_1.default.join(pathe_1.default.dirname(inputFlacFile), `tmp_${pathe_1.default.basename(inputFlacFile, ".flac")}.wav`);
74
74
  await new Promise((resolve, reject) => {
75
- (0, fluent_ffmpeg_1.default)(inputFlacFile)
75
+ const ins = (0, fluent_ffmpeg_1.default)(inputFlacFile)
76
76
  .audioCodec("pcm_s16le")
77
77
  .save(wavPath)
78
- .on("end", function () {
79
- resolve(null);
78
+ .on("end", () => {
79
+ resolve(true);
80
+ ins.kill('SIGTERM');
81
+ })
82
+ .on("error", (err) => {
83
+ reject(err);
84
+ ins.kill('SIGTERM');
80
85
  });
81
86
  });
82
87
  await SFfmpegTool.wav2ogg(wavPath, outputOggPath, quality);
@@ -100,12 +105,18 @@ class SFfmpegTool {
100
105
  //.audioChannels(channels)
101
106
  //.noMetadata()
102
107
  return new Promise((resolve, reject) => {
103
- (0, fluent_ffmpeg_1.default)(inputWavPath)
108
+ const ins = (0, fluent_ffmpeg_1.default)(inputWavPath)
104
109
  .audioQuality(quality)
105
110
  .audioCodec("libvorbis")
106
111
  .save(outputOggPath)
107
- .on("end", () => resolve(true))
108
- .on("error", (err) => reject(err));
112
+ .on("end", () => {
113
+ resolve(true);
114
+ ins.kill('SIGTERM');
115
+ })
116
+ .on("error", (err) => {
117
+ reject(err);
118
+ ins.kill('SIGTERM');
119
+ });
109
120
  });
110
121
  }
111
122
  /**剪切音频
@@ -116,12 +127,18 @@ class SFfmpegTool {
116
127
  */
117
128
  static async cutAudio(audioPath, outPath, start, time) {
118
129
  return new Promise((resolve, reject) => {
119
- (0, fluent_ffmpeg_1.default)(audioPath)
130
+ const ins = (0, fluent_ffmpeg_1.default)(audioPath)
120
131
  .setStartTime(start)
121
132
  .setDuration(time)
122
133
  .save(outPath)
123
- .on("end", () => resolve(true))
124
- .on("error", (err) => reject(err));
134
+ .on("end", () => {
135
+ resolve(true);
136
+ ins.kill('SIGTERM');
137
+ })
138
+ .on("error", (err) => {
139
+ reject(err);
140
+ ins.kill('SIGTERM');
141
+ });
125
142
  });
126
143
  }
127
144
  /**删除首尾静音
@@ -132,14 +149,20 @@ class SFfmpegTool {
132
149
  */
133
150
  static async trimSilence(inputWavPath, outputWavPath, threshold = -50, silence = 0.2) {
134
151
  return new Promise((resolve, reject) => {
135
- (0, fluent_ffmpeg_1.default)(inputWavPath)
152
+ const ins = (0, fluent_ffmpeg_1.default)(inputWavPath)
136
153
  .audioFilters(`silenceremove=start_periods=1:start_threshold=${threshold}dB:start_silence=${silence}`)
137
154
  .audioFilters("areverse")
138
155
  .audioFilters(`silenceremove=start_periods=1:start_threshold=${threshold}dB:start_silence=${silence}`)
139
156
  .audioFilters("areverse")
140
157
  .save(outputWavPath)
141
- .on("end", () => resolve(true))
142
- .on("error", (err) => reject(err));
158
+ .on("end", () => {
159
+ resolve(true);
160
+ ins.kill('SIGTERM');
161
+ })
162
+ .on("error", (err) => {
163
+ reject(err);
164
+ ins.kill('SIGTERM');
165
+ });
143
166
  });
144
167
  }
145
168
  /**重采样
@@ -148,11 +171,17 @@ class SFfmpegTool {
148
171
  */
149
172
  static async resample(inputWavPath, outputWavPath, rate = 22050) {
150
173
  return new Promise((resolve, reject) => {
151
- (0, fluent_ffmpeg_1.default)(inputWavPath)
174
+ const ins = (0, fluent_ffmpeg_1.default)(inputWavPath)
152
175
  .audioFrequency(rate)
153
176
  .save(outputWavPath)
154
- .on("end", () => resolve(true))
155
- .on("error", (err) => reject(err));
177
+ .on("end", () => {
178
+ resolve(true);
179
+ ins.kill('SIGTERM');
180
+ })
181
+ .on("error", (err) => {
182
+ reject(err);
183
+ ins.kill('SIGTERM');
184
+ });
156
185
  });
157
186
  }
158
187
  //多线程处理
@@ -162,7 +191,7 @@ class SFfmpegTool {
162
191
  * @param cpCount - 并发数
163
192
  */
164
193
  static async wav2oggMP(ioMap, quality = 10, cpCount = 16) {
165
- await new UtilClass_1.Stream(Object.entries(ioMap))
194
+ await new UtilClass_1.Stream(Object.entries(ioMap), cpCount)
166
195
  .map(async ([inPath, outPath]) => {
167
196
  UtilLogger_1.SLogger.info(`SFfmpegTool.wav2oggMP 正在处理:${outPath}`);
168
197
  await SFfmpegTool.wav2ogg(inPath, outPath, quality);
@@ -175,7 +204,7 @@ class SFfmpegTool {
175
204
  * @param cpCount - 并发数
176
205
  */
177
206
  static async flac2oggMP(ioMap, quality = 10, cpCount = 16) {
178
- await new UtilClass_1.Stream(Object.entries(ioMap))
207
+ await new UtilClass_1.Stream(Object.entries(ioMap), cpCount)
179
208
  .map(async ([inPath, outPath]) => {
180
209
  UtilLogger_1.SLogger.info(`SFfmpegTool.flac2oggMP 正在处理:${outPath}`);
181
210
  await SFfmpegTool.flac2ogg(inPath, outPath, quality);
@@ -188,7 +217,7 @@ class SFfmpegTool {
188
217
  * @param silence - 保留静音时长
189
218
  */
190
219
  static async trimSilenceMP(ioMap, threshold = -50, silence = 0.2, cpCount = 16) {
191
- await new UtilClass_1.Stream(Object.entries(ioMap))
220
+ await new UtilClass_1.Stream(Object.entries(ioMap), cpCount)
192
221
  .map(async ([inPath, outPath]) => {
193
222
  UtilLogger_1.SLogger.info(`SFfmpegTool.trimSilenceMP 正在处理:${outPath}`);
194
223
  await SFfmpegTool.trimSilence(inPath, outPath, threshold, silence);
@@ -201,7 +230,7 @@ class SFfmpegTool {
201
230
  * @param cpCount - 并发数
202
231
  */
203
232
  static async resampleMP(ioMap, rate = 22050, cpCount = 16) {
204
- await new UtilClass_1.Stream(Object.entries(ioMap))
233
+ await new UtilClass_1.Stream(Object.entries(ioMap), cpCount)
205
234
  .map(async ([inPath, outPath]) => {
206
235
  UtilLogger_1.SLogger.info(`SFfmpegTool.resampleMP 正在处理:${outPath}`);
207
236
  await SFfmpegTool.resample(inPath, outPath, rate);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zwa73/utils",
3
- "version": "1.0.158",
3
+ "version": "1.0.160",
4
4
  "description": "my utils",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -58,11 +58,16 @@ class SFfmpegTool {
58
58
  `tmp_${path.basename(inputFlacFile, ".flac")}.wav`
59
59
  );
60
60
  await new Promise((resolve, reject) => {
61
- fluentFfmpeg(inputFlacFile)
61
+ const ins = fluentFfmpeg(inputFlacFile)
62
62
  .audioCodec("pcm_s16le")
63
63
  .save(wavPath)
64
- .on("end", function () {
65
- resolve(null);
64
+ .on("end", () => {
65
+ resolve(true);
66
+ ins.kill('SIGTERM');
67
+ })
68
+ .on("error", (err) => {
69
+ reject(err);
70
+ ins.kill('SIGTERM');
66
71
  });
67
72
  });
68
73
  await SFfmpegTool.wav2ogg(wavPath, outputOggPath, quality);
@@ -89,12 +94,18 @@ class SFfmpegTool {
89
94
  //.audioChannels(channels)
90
95
  //.noMetadata()
91
96
  return new Promise((resolve, reject) => {
92
- fluentFfmpeg(inputWavPath)
97
+ const ins = fluentFfmpeg(inputWavPath)
93
98
  .audioQuality(quality)
94
99
  .audioCodec("libvorbis")
95
100
  .save(outputOggPath)
96
- .on("end", () => resolve(true))
97
- .on("error", (err) => reject(err));
101
+ .on("end", () => {
102
+ resolve(true);
103
+ ins.kill('SIGTERM');
104
+ })
105
+ .on("error", (err) => {
106
+ reject(err);
107
+ ins.kill('SIGTERM');
108
+ });
98
109
  });
99
110
  }
100
111
  /**剪切音频
@@ -110,12 +121,18 @@ class SFfmpegTool {
110
121
  time: number
111
122
  ): Promise<boolean> {
112
123
  return new Promise((resolve, reject) => {
113
- fluentFfmpeg(audioPath)
124
+ const ins = fluentFfmpeg(audioPath)
114
125
  .setStartTime(start)
115
126
  .setDuration(time)
116
127
  .save(outPath)
117
- .on("end", () => resolve(true))
118
- .on("error", (err) => reject(err));
128
+ .on("end", () => {
129
+ resolve(true);
130
+ ins.kill('SIGTERM');
131
+ })
132
+ .on("error", (err) => {
133
+ reject(err);
134
+ ins.kill('SIGTERM');
135
+ });
119
136
  });
120
137
  }
121
138
  /**删除首尾静音
@@ -131,7 +148,7 @@ class SFfmpegTool {
131
148
  silence: number = 0.2
132
149
  ): Promise<boolean> {
133
150
  return new Promise((resolve, reject) => {
134
- fluentFfmpeg(inputWavPath)
151
+ const ins = fluentFfmpeg(inputWavPath)
135
152
  .audioFilters(
136
153
  `silenceremove=start_periods=1:start_threshold=${threshold}dB:start_silence=${silence}`
137
154
  )
@@ -141,8 +158,14 @@ class SFfmpegTool {
141
158
  )
142
159
  .audioFilters("areverse")
143
160
  .save(outputWavPath)
144
- .on("end", () => resolve(true))
145
- .on("error", (err) => reject(err));
161
+ .on("end", () => {
162
+ resolve(true);
163
+ ins.kill('SIGTERM');
164
+ })
165
+ .on("error", (err) => {
166
+ reject(err);
167
+ ins.kill('SIGTERM');
168
+ });
146
169
  });
147
170
  }
148
171
  /**重采样
@@ -151,11 +174,17 @@ class SFfmpegTool {
151
174
  */
152
175
  static async resample(inputWavPath: string, outputWavPath: string, rate: number = 22050): Promise<boolean> {
153
176
  return new Promise((resolve, reject) => {
154
- fluentFfmpeg(inputWavPath)
177
+ const ins = fluentFfmpeg(inputWavPath)
155
178
  .audioFrequency(rate)
156
179
  .save(outputWavPath)
157
- .on("end", () => resolve(true))
158
- .on("error", (err) => reject(err));
180
+ .on("end", () => {
181
+ resolve(true);
182
+ ins.kill('SIGTERM');
183
+ })
184
+ .on("error", (err) => {
185
+ reject(err);
186
+ ins.kill('SIGTERM');
187
+ });
159
188
  });
160
189
  }
161
190
 
@@ -166,7 +195,7 @@ class SFfmpegTool {
166
195
  * @param cpCount - 并发数
167
196
  */
168
197
  static async wav2oggMP(ioMap: IOMap, quality = 10, cpCount = 16) {
169
- await new Stream(Object.entries(ioMap))
198
+ await new Stream(Object.entries(ioMap),cpCount)
170
199
  .map(async ([inPath, outPath]) => {
171
200
  SLogger.info(`SFfmpegTool.wav2oggMP 正在处理:${outPath}`);
172
201
  await SFfmpegTool.wav2ogg(inPath, outPath, quality);
@@ -183,7 +212,7 @@ class SFfmpegTool {
183
212
  quality: number = 10,
184
213
  cpCount: number = 16
185
214
  ) {
186
- await new Stream(Object.entries(ioMap))
215
+ await new Stream(Object.entries(ioMap),cpCount)
187
216
  .map(async ([inPath, outPath]) => {
188
217
  SLogger.info(`SFfmpegTool.flac2oggMP 正在处理:${outPath}`);
189
218
  await SFfmpegTool.flac2ogg(inPath, outPath, quality);
@@ -201,7 +230,7 @@ class SFfmpegTool {
201
230
  silence: number = 0.2,
202
231
  cpCount: number = 16
203
232
  ) {
204
- await new Stream(Object.entries(ioMap))
233
+ await new Stream(Object.entries(ioMap),cpCount)
205
234
  .map(async ([inPath, outPath]) => {
206
235
  SLogger.info(`SFfmpegTool.trimSilenceMP 正在处理:${outPath}`);
207
236
  await SFfmpegTool.trimSilence(inPath, outPath, threshold, silence);
@@ -215,7 +244,7 @@ class SFfmpegTool {
215
244
  * @param cpCount - 并发数
216
245
  */
217
246
  static async resampleMP(ioMap: IOMap, rate: number = 22050, cpCount: number = 16) {
218
- await new Stream(Object.entries(ioMap))
247
+ await new Stream(Object.entries(ioMap),cpCount)
219
248
  .map(async ([inPath, outPath]) => {
220
249
  SLogger.info(`SFfmpegTool.resampleMP 正在处理:${outPath}`);
221
250
  await SFfmpegTool.resample(inPath, outPath, rate);