n8n-nodes-sb-render 1.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/LICENSE +21 -0
- package/README.md +442 -0
- package/dist/nodes/SbRender/SbRender.node.d.ts +10 -0
- package/dist/nodes/SbRender/SbRender.node.d.ts.map +1 -0
- package/dist/nodes/SbRender/SbRender.node.js +768 -0
- package/dist/nodes/SbRender/SbRender.node.js.map +1 -0
- package/dist/nodes/SbRender/interfaces/index.d.ts +155 -0
- package/dist/nodes/SbRender/interfaces/index.d.ts.map +1 -0
- package/dist/nodes/SbRender/interfaces/index.js +41 -0
- package/dist/nodes/SbRender/interfaces/index.js.map +1 -0
- package/dist/nodes/SbRender/sbrender.svg +7 -0
- package/dist/nodes/SbRender/services/AudioMixer.d.ts +26 -0
- package/dist/nodes/SbRender/services/AudioMixer.d.ts.map +1 -0
- package/dist/nodes/SbRender/services/AudioMixer.js +120 -0
- package/dist/nodes/SbRender/services/AudioMixer.js.map +1 -0
- package/dist/nodes/SbRender/services/FileManager.d.ts +37 -0
- package/dist/nodes/SbRender/services/FileManager.d.ts.map +1 -0
- package/dist/nodes/SbRender/services/FileManager.js +157 -0
- package/dist/nodes/SbRender/services/FileManager.js.map +1 -0
- package/dist/nodes/SbRender/services/SubtitleEngine.d.ts +64 -0
- package/dist/nodes/SbRender/services/SubtitleEngine.d.ts.map +1 -0
- package/dist/nodes/SbRender/services/SubtitleEngine.js +213 -0
- package/dist/nodes/SbRender/services/SubtitleEngine.js.map +1 -0
- package/dist/nodes/SbRender/services/VideoComposer.d.ts +28 -0
- package/dist/nodes/SbRender/services/VideoComposer.d.ts.map +1 -0
- package/dist/nodes/SbRender/services/VideoComposer.js +228 -0
- package/dist/nodes/SbRender/services/VideoComposer.js.map +1 -0
- package/dist/nodes/SbRender/utils/ffmpeg.d.ts +32 -0
- package/dist/nodes/SbRender/utils/ffmpeg.d.ts.map +1 -0
- package/dist/nodes/SbRender/utils/ffmpeg.js +107 -0
- package/dist/nodes/SbRender/utils/ffmpeg.js.map +1 -0
- package/dist/nodes/SbRender/utils/validation.d.ts +32 -0
- package/dist/nodes/SbRender/utils/validation.d.ts.map +1 -0
- package/dist/nodes/SbRender/utils/validation.js +210 -0
- package/dist/nodes/SbRender/utils/validation.js.map +1 -0
- package/index.js +3 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SbRender.node.js","sourceRoot":"","sources":["../../../nodes/SbRender/SbRender.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript interfaces for sb-render n8n node
|
|
3
|
+
*/
|
|
4
|
+
export interface ISbRenderNodeParams {
|
|
5
|
+
resource: 'Video';
|
|
6
|
+
operation: 'Render';
|
|
7
|
+
videoSource: 'url' | 'binary';
|
|
8
|
+
videoUrl?: string;
|
|
9
|
+
videoBinaryProperty?: string;
|
|
10
|
+
enableBGM: boolean;
|
|
11
|
+
bgmSource?: 'url' | 'binary';
|
|
12
|
+
bgmUrl?: string;
|
|
13
|
+
bgmBinaryProperty?: string;
|
|
14
|
+
bgmVolume?: number;
|
|
15
|
+
bgmFadeIn?: number;
|
|
16
|
+
bgmFadeOut?: number;
|
|
17
|
+
enableNarration: boolean;
|
|
18
|
+
narrationSource?: 'url' | 'binary';
|
|
19
|
+
narrationUrl?: string;
|
|
20
|
+
narrationBinaryProperty?: string;
|
|
21
|
+
narrationVolume?: number;
|
|
22
|
+
narrationDelay?: number;
|
|
23
|
+
enableSubtitles: boolean;
|
|
24
|
+
subtitles?: ISubtitleConfig[];
|
|
25
|
+
outputFormat: 'mp4' | 'mov' | 'webm';
|
|
26
|
+
videoCodec: 'libx264' | 'libx265' | 'vp9';
|
|
27
|
+
quality: 'low' | 'medium' | 'high' | 'custom';
|
|
28
|
+
customCRF?: number;
|
|
29
|
+
outputBinaryProperty: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ISubtitleConfig {
|
|
32
|
+
text: string;
|
|
33
|
+
startTime: number;
|
|
34
|
+
endTime: number;
|
|
35
|
+
position: 'top' | 'middle' | 'bottom' | 'custom';
|
|
36
|
+
customX?: number;
|
|
37
|
+
customY?: number;
|
|
38
|
+
fontSize: number;
|
|
39
|
+
fontColor: string;
|
|
40
|
+
fontFamily: string;
|
|
41
|
+
alignment: 'left' | 'center' | 'right';
|
|
42
|
+
backgroundColor?: string;
|
|
43
|
+
backgroundOpacity?: number;
|
|
44
|
+
borderColor?: string;
|
|
45
|
+
borderWidth?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface IMediaFile {
|
|
48
|
+
path: string;
|
|
49
|
+
type: 'video' | 'audio' | 'subtitle';
|
|
50
|
+
temporary: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface IAudioMixConfig {
|
|
53
|
+
videoDuration: number;
|
|
54
|
+
bgmPath?: string;
|
|
55
|
+
bgmVolume: number;
|
|
56
|
+
bgmFadeIn: number;
|
|
57
|
+
bgmFadeOut: number;
|
|
58
|
+
narrationPath?: string;
|
|
59
|
+
narrationVolume: number;
|
|
60
|
+
narrationDelay: number;
|
|
61
|
+
}
|
|
62
|
+
export interface IFFmpegCommand {
|
|
63
|
+
inputs: string[];
|
|
64
|
+
filters: string[];
|
|
65
|
+
outputs: string[];
|
|
66
|
+
}
|
|
67
|
+
export interface IFileManager {
|
|
68
|
+
/**
|
|
69
|
+
* Download file from URL to temporary location
|
|
70
|
+
*/
|
|
71
|
+
downloadFile(url: string): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Extract binary data to temporary file
|
|
74
|
+
*/
|
|
75
|
+
extractBinary(binaryData: Buffer, extension: string): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Create temporary file path with extension
|
|
78
|
+
*/
|
|
79
|
+
createTempFile(extension: string): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Clean up temporary files
|
|
82
|
+
*/
|
|
83
|
+
cleanup(files: string[]): Promise<void>;
|
|
84
|
+
}
|
|
85
|
+
export interface IAudioMixer {
|
|
86
|
+
/**
|
|
87
|
+
* Mix BGM and narration with video audio
|
|
88
|
+
*/
|
|
89
|
+
mixAudioTracks(videoPath: string, config: IAudioMixConfig): Promise<string>;
|
|
90
|
+
/**
|
|
91
|
+
* Generate FFmpeg audio filter chain
|
|
92
|
+
*/
|
|
93
|
+
getAudioFilterChain(config: IAudioMixConfig, hasOriginalAudio: boolean): string;
|
|
94
|
+
}
|
|
95
|
+
export interface ISubtitleEngine {
|
|
96
|
+
/**
|
|
97
|
+
* Generate SRT subtitle file
|
|
98
|
+
*/
|
|
99
|
+
generateSRT(subtitles: ISubtitleConfig[]): string;
|
|
100
|
+
/**
|
|
101
|
+
* Generate ASS subtitle file with styling
|
|
102
|
+
*/
|
|
103
|
+
generateASS(subtitles: ISubtitleConfig[], videoWidth: number, videoHeight: number): string;
|
|
104
|
+
/**
|
|
105
|
+
* Write subtitle file to disk
|
|
106
|
+
*/
|
|
107
|
+
writeSubtitleFile(content: string, format: 'srt' | 'ass'): Promise<string>;
|
|
108
|
+
}
|
|
109
|
+
export interface IVideoComposer {
|
|
110
|
+
/**
|
|
111
|
+
* Compose final video with audio and subtitles
|
|
112
|
+
*/
|
|
113
|
+
compose(videoPath: string, audioPath: string | null, subtitlePath: string | null, outputPath: string, config: ISbRenderNodeParams): Promise<Buffer>;
|
|
114
|
+
/**
|
|
115
|
+
* Get video metadata (duration, resolution, codec)
|
|
116
|
+
*/
|
|
117
|
+
getVideoMetadata(videoPath: string): Promise<IVideoMetadata>;
|
|
118
|
+
}
|
|
119
|
+
export interface IVideoMetadata {
|
|
120
|
+
duration: number;
|
|
121
|
+
width: number;
|
|
122
|
+
height: number;
|
|
123
|
+
hasAudio: boolean;
|
|
124
|
+
videoCodec: string;
|
|
125
|
+
audioCodec?: string;
|
|
126
|
+
}
|
|
127
|
+
export declare const DEFAULTS: {
|
|
128
|
+
bgmVolume: number;
|
|
129
|
+
bgmFadeIn: number;
|
|
130
|
+
bgmFadeOut: number;
|
|
131
|
+
narrationVolume: number;
|
|
132
|
+
narrationDelay: number;
|
|
133
|
+
subtitle: {
|
|
134
|
+
position: "bottom";
|
|
135
|
+
fontSize: number;
|
|
136
|
+
fontColor: string;
|
|
137
|
+
fontFamily: string;
|
|
138
|
+
alignment: "center";
|
|
139
|
+
backgroundColor: string;
|
|
140
|
+
backgroundOpacity: number;
|
|
141
|
+
borderColor: string;
|
|
142
|
+
borderWidth: number;
|
|
143
|
+
customY: number;
|
|
144
|
+
};
|
|
145
|
+
outputFormat: "mp4";
|
|
146
|
+
videoCodec: "libx264";
|
|
147
|
+
quality: "high";
|
|
148
|
+
crfMapping: {
|
|
149
|
+
low: number;
|
|
150
|
+
medium: number;
|
|
151
|
+
high: number;
|
|
152
|
+
};
|
|
153
|
+
outputBinaryProperty: string;
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../nodes/SbRender/interfaces/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript interfaces for sb-render n8n node
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULTS = void 0;
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Default Configuration
|
|
9
|
+
// ============================================================================
|
|
10
|
+
exports.DEFAULTS = {
|
|
11
|
+
// Audio
|
|
12
|
+
bgmVolume: 30,
|
|
13
|
+
bgmFadeIn: 2,
|
|
14
|
+
bgmFadeOut: 2,
|
|
15
|
+
narrationVolume: 80,
|
|
16
|
+
narrationDelay: 0,
|
|
17
|
+
// Subtitles
|
|
18
|
+
subtitle: {
|
|
19
|
+
position: 'bottom',
|
|
20
|
+
fontSize: 48,
|
|
21
|
+
fontColor: '#FFFFFF',
|
|
22
|
+
fontFamily: 'Arial',
|
|
23
|
+
alignment: 'center',
|
|
24
|
+
backgroundColor: '#000000',
|
|
25
|
+
backgroundOpacity: 80,
|
|
26
|
+
borderColor: '#000000',
|
|
27
|
+
borderWidth: 2,
|
|
28
|
+
customY: 100, // pixels from bottom when position = 'bottom'
|
|
29
|
+
},
|
|
30
|
+
// Output
|
|
31
|
+
outputFormat: 'mp4',
|
|
32
|
+
videoCodec: 'libx264',
|
|
33
|
+
quality: 'high',
|
|
34
|
+
crfMapping: {
|
|
35
|
+
low: 28,
|
|
36
|
+
medium: 23,
|
|
37
|
+
high: 18,
|
|
38
|
+
},
|
|
39
|
+
outputBinaryProperty: 'data',
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nodes/SbRender/interfaces/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAiLH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAElE,QAAA,QAAQ,GAAG;IACtB,QAAQ;IACR,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE,CAAC;IAEjB,YAAY;IACZ,QAAQ,EAAE;QACR,QAAQ,EAAE,QAAiB;QAC3B,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAiB;QAC5B,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,GAAG,EAAE,8CAA8C;KAC7D;IAED,SAAS;IACT,YAAY,EAAE,KAAc;IAC5B,UAAU,EAAE,SAAkB;IAC9B,OAAO,EAAE,MAAe;IACxB,UAAU,EAAE;QACV,GAAG,EAAE,EAAE;QACP,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;KACT;IACD,oBAAoB,EAAE,MAAM;CAC7B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
|
|
2
|
+
<rect width="100" height="100" fill="#4A90E2" rx="15"/>
|
|
3
|
+
<path d="M30 35 L30 65 L60 50 Z" fill="white"/>
|
|
4
|
+
<rect x="65" y="60" width="15" height="8" fill="white" rx="2"/>
|
|
5
|
+
<rect x="65" y="45" width="15" height="8" fill="white" rx="2"/>
|
|
6
|
+
<rect x="65" y="30" width="15" height="8" fill="white" rx="2"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IAudioMixer, IAudioMixConfig } from '../interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* AudioMixer Service
|
|
4
|
+
* Handles audio track mixing with volume control and fade effects
|
|
5
|
+
*/
|
|
6
|
+
export declare class AudioMixer implements IAudioMixer {
|
|
7
|
+
/**
|
|
8
|
+
* Mix BGM and narration with video audio
|
|
9
|
+
* Returns path to video with mixed audio
|
|
10
|
+
*/
|
|
11
|
+
mixAudioTracks(videoPath: string, _config: IAudioMixConfig): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Generate FFmpeg audio filter chain
|
|
14
|
+
* Creates complex filter for mixing multiple audio sources
|
|
15
|
+
*/
|
|
16
|
+
getAudioFilterChain(config: IAudioMixConfig, hasOriginalAudio: boolean): string;
|
|
17
|
+
/**
|
|
18
|
+
* Calculate the number of audio inputs for FFmpeg command
|
|
19
|
+
*/
|
|
20
|
+
getAudioInputCount(config: IAudioMixConfig, hasOriginalAudio: boolean): number;
|
|
21
|
+
/**
|
|
22
|
+
* Validate audio mix configuration
|
|
23
|
+
*/
|
|
24
|
+
validateConfig(config: IAudioMixConfig): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=AudioMixer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioMixer.d.ts","sourceRoot":"","sources":["../../../../nodes/SbRender/services/AudioMixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAElE;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAC5C;;;OAGG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC;IAOlB;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,GAAG,MAAM;IA0E/E;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,GAAG,MAAM;IAQ9E;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;CAyB9C"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioMixer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* AudioMixer Service
|
|
6
|
+
* Handles audio track mixing with volume control and fade effects
|
|
7
|
+
*/
|
|
8
|
+
class AudioMixer {
|
|
9
|
+
/**
|
|
10
|
+
* Mix BGM and narration with video audio
|
|
11
|
+
* Returns path to video with mixed audio
|
|
12
|
+
*/
|
|
13
|
+
async mixAudioTracks(videoPath, _config) {
|
|
14
|
+
// This method would typically use FFmpeg directly
|
|
15
|
+
// For now, we return the filter chain that will be used by VideoComposer
|
|
16
|
+
// The actual mixing happens during final composition
|
|
17
|
+
return videoPath;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Generate FFmpeg audio filter chain
|
|
21
|
+
* Creates complex filter for mixing multiple audio sources
|
|
22
|
+
*/
|
|
23
|
+
getAudioFilterChain(config, hasOriginalAudio) {
|
|
24
|
+
const filters = [];
|
|
25
|
+
const inputs = [];
|
|
26
|
+
let inputIndex = hasOriginalAudio ? 1 : 0; // 0 is video, skip if no audio
|
|
27
|
+
// Handle original video audio
|
|
28
|
+
if (hasOriginalAudio) {
|
|
29
|
+
filters.push('[0:a]volume=1.0[original]');
|
|
30
|
+
inputs.push('[original]');
|
|
31
|
+
}
|
|
32
|
+
// Handle BGM
|
|
33
|
+
if (config.bgmPath) {
|
|
34
|
+
const bgmVolume = config.bgmVolume / 100;
|
|
35
|
+
const fadeIn = config.bgmFadeIn;
|
|
36
|
+
const fadeOut = config.bgmFadeOut;
|
|
37
|
+
const fadeOutStart = Math.max(0, config.videoDuration - fadeOut);
|
|
38
|
+
let bgmFilter = `[${inputIndex}:a]volume=${bgmVolume}`;
|
|
39
|
+
// Add fade in effect
|
|
40
|
+
if (fadeIn > 0) {
|
|
41
|
+
bgmFilter += `,afade=t=in:st=0:d=${fadeIn}`;
|
|
42
|
+
}
|
|
43
|
+
// Add fade out effect
|
|
44
|
+
if (fadeOut > 0) {
|
|
45
|
+
bgmFilter += `,afade=t=out:st=${fadeOutStart}:d=${fadeOut}`;
|
|
46
|
+
}
|
|
47
|
+
bgmFilter += '[bgm]';
|
|
48
|
+
filters.push(bgmFilter);
|
|
49
|
+
inputs.push('[bgm]');
|
|
50
|
+
inputIndex++;
|
|
51
|
+
}
|
|
52
|
+
// Handle Narration
|
|
53
|
+
if (config.narrationPath) {
|
|
54
|
+
const narrationVolume = config.narrationVolume / 100;
|
|
55
|
+
const delay = config.narrationDelay * 1000; // Convert to milliseconds
|
|
56
|
+
let narrationFilter = `[${inputIndex}:a]volume=${narrationVolume}`;
|
|
57
|
+
// Add delay if specified
|
|
58
|
+
if (delay > 0) {
|
|
59
|
+
narrationFilter += `,adelay=${delay}|${delay}`;
|
|
60
|
+
}
|
|
61
|
+
narrationFilter += '[narration]';
|
|
62
|
+
filters.push(narrationFilter);
|
|
63
|
+
inputs.push('[narration]');
|
|
64
|
+
inputIndex++;
|
|
65
|
+
}
|
|
66
|
+
// Mix all audio tracks
|
|
67
|
+
if (inputs.length === 0) {
|
|
68
|
+
return ''; // No audio to mix
|
|
69
|
+
}
|
|
70
|
+
if (inputs.length === 1) {
|
|
71
|
+
// Only one audio source, just use it directly
|
|
72
|
+
const singleInput = inputs[0];
|
|
73
|
+
filters.push(`${singleInput}acopy[mixed]`);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Mix multiple audio sources
|
|
77
|
+
const mixInputs = inputs.join('');
|
|
78
|
+
filters.push(`${mixInputs}amix=inputs=${inputs.length}:duration=first:dropout_transition=2,dynaudnorm[mixed]`);
|
|
79
|
+
}
|
|
80
|
+
return filters.join(';');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Calculate the number of audio inputs for FFmpeg command
|
|
84
|
+
*/
|
|
85
|
+
getAudioInputCount(config, hasOriginalAudio) {
|
|
86
|
+
let count = 0;
|
|
87
|
+
if (hasOriginalAudio)
|
|
88
|
+
count++;
|
|
89
|
+
if (config.bgmPath)
|
|
90
|
+
count++;
|
|
91
|
+
if (config.narrationPath)
|
|
92
|
+
count++;
|
|
93
|
+
return count;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate audio mix configuration
|
|
97
|
+
*/
|
|
98
|
+
validateConfig(config) {
|
|
99
|
+
if (config.bgmVolume < 0 || config.bgmVolume > 100) {
|
|
100
|
+
throw new Error('BGM volume must be between 0 and 100');
|
|
101
|
+
}
|
|
102
|
+
if (config.narrationVolume < 0 || config.narrationVolume > 100) {
|
|
103
|
+
throw new Error('Narration volume must be between 0 and 100');
|
|
104
|
+
}
|
|
105
|
+
if (config.bgmFadeIn < 0) {
|
|
106
|
+
throw new Error('BGM fade-in duration must be non-negative');
|
|
107
|
+
}
|
|
108
|
+
if (config.bgmFadeOut < 0) {
|
|
109
|
+
throw new Error('BGM fade-out duration must be non-negative');
|
|
110
|
+
}
|
|
111
|
+
if (config.narrationDelay < 0) {
|
|
112
|
+
throw new Error('Narration delay must be non-negative');
|
|
113
|
+
}
|
|
114
|
+
if (config.videoDuration <= 0) {
|
|
115
|
+
throw new Error('Video duration must be positive');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.AudioMixer = AudioMixer;
|
|
120
|
+
//# sourceMappingURL=AudioMixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioMixer.js","sourceRoot":"","sources":["../../../../nodes/SbRender/services/AudioMixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { IFileManager } from '../interfaces';
|
|
2
|
+
/**
|
|
3
|
+
* FileManager Service
|
|
4
|
+
* Handles file downloads, binary extraction, and temporary file management
|
|
5
|
+
*/
|
|
6
|
+
export declare class FileManager implements IFileManager {
|
|
7
|
+
private tempFiles;
|
|
8
|
+
/**
|
|
9
|
+
* Download file from URL to temporary location
|
|
10
|
+
*/
|
|
11
|
+
downloadFile(url: string): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Extract binary data to temporary file
|
|
14
|
+
*/
|
|
15
|
+
extractBinary(binaryData: Buffer, extension: string): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Create temporary file path with extension
|
|
18
|
+
*/
|
|
19
|
+
createTempFile(extension: string): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Clean up temporary files
|
|
22
|
+
*/
|
|
23
|
+
cleanup(files?: string[]): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Extract file extension from URL
|
|
26
|
+
*/
|
|
27
|
+
private getExtensionFromUrl;
|
|
28
|
+
/**
|
|
29
|
+
* Get file extension from Content-Type header
|
|
30
|
+
*/
|
|
31
|
+
private getExtensionFromContentType;
|
|
32
|
+
/**
|
|
33
|
+
* Get list of tracked temporary files
|
|
34
|
+
*/
|
|
35
|
+
getTempFiles(): string[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=FileManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["../../../../nodes/SbRender/services/FileManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,SAAS,CAAgB;IAEjC;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BhD;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU3E;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWxD;;OAEG;IACG,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAkBnC;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.FileManager = void 0;
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
43
|
+
const tmp_promise_1 = require("tmp-promise");
|
|
44
|
+
/**
|
|
45
|
+
* FileManager Service
|
|
46
|
+
* Handles file downloads, binary extraction, and temporary file management
|
|
47
|
+
*/
|
|
48
|
+
class FileManager {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.tempFiles = [];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Download file from URL to temporary location
|
|
54
|
+
*/
|
|
55
|
+
async downloadFile(url) {
|
|
56
|
+
try {
|
|
57
|
+
const response = await (0, node_fetch_1.default)(url);
|
|
58
|
+
if (!response.ok) {
|
|
59
|
+
throw new Error(`Failed to download file: ${response.status} ${response.statusText}`);
|
|
60
|
+
}
|
|
61
|
+
// Extract file extension from URL or content-type
|
|
62
|
+
const extension = this.getExtensionFromUrl(url) || this.getExtensionFromContentType(response.headers.get('content-type'));
|
|
63
|
+
const tempPath = await this.createTempFile(extension);
|
|
64
|
+
// Stream download to temp file
|
|
65
|
+
const fileStream = (0, fs_1.createWriteStream)(tempPath);
|
|
66
|
+
await new Promise((resolve, reject) => {
|
|
67
|
+
response.body.pipe(fileStream);
|
|
68
|
+
response.body.on('error', reject);
|
|
69
|
+
fileStream.on('finish', resolve);
|
|
70
|
+
});
|
|
71
|
+
return tempPath;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new Error(`File download failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Extract binary data to temporary file
|
|
79
|
+
*/
|
|
80
|
+
async extractBinary(binaryData, extension) {
|
|
81
|
+
try {
|
|
82
|
+
const tempPath = await this.createTempFile(extension);
|
|
83
|
+
await fs_1.promises.writeFile(tempPath, binaryData);
|
|
84
|
+
return tempPath;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new Error(`Binary extraction failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create temporary file path with extension
|
|
92
|
+
*/
|
|
93
|
+
async createTempFile(extension) {
|
|
94
|
+
const result = await (0, tmp_promise_1.file)({
|
|
95
|
+
prefix: 'sb-render-',
|
|
96
|
+
postfix: extension.startsWith('.') ? extension : `.${extension}`,
|
|
97
|
+
keep: true, // Keep file until manual cleanup
|
|
98
|
+
});
|
|
99
|
+
this.tempFiles.push(result.path);
|
|
100
|
+
return result.path;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Clean up temporary files
|
|
104
|
+
*/
|
|
105
|
+
async cleanup(files) {
|
|
106
|
+
const filesToClean = files || this.tempFiles;
|
|
107
|
+
await Promise.all(filesToClean.map(async (file) => {
|
|
108
|
+
try {
|
|
109
|
+
await fs_1.promises.unlink(file);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Ignore errors if file doesn't exist
|
|
113
|
+
if (error.code !== 'ENOENT') {
|
|
114
|
+
console.warn(`Failed to clean up temp file ${file}:`, error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
if (!files) {
|
|
119
|
+
this.tempFiles = [];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extract file extension from URL
|
|
124
|
+
*/
|
|
125
|
+
getExtensionFromUrl(url) {
|
|
126
|
+
const urlPath = new URL(url).pathname;
|
|
127
|
+
const ext = path.extname(urlPath);
|
|
128
|
+
return ext || '';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get file extension from Content-Type header
|
|
132
|
+
*/
|
|
133
|
+
getExtensionFromContentType(contentType) {
|
|
134
|
+
if (!contentType)
|
|
135
|
+
return '';
|
|
136
|
+
const mimeToExt = {
|
|
137
|
+
'video/mp4': '.mp4',
|
|
138
|
+
'video/quicktime': '.mov',
|
|
139
|
+
'video/webm': '.webm',
|
|
140
|
+
'video/x-msvideo': '.avi',
|
|
141
|
+
'audio/mpeg': '.mp3',
|
|
142
|
+
'audio/wav': '.wav',
|
|
143
|
+
'audio/aac': '.aac',
|
|
144
|
+
'audio/ogg': '.ogg',
|
|
145
|
+
};
|
|
146
|
+
const mimeType = contentType.split(';')[0].trim();
|
|
147
|
+
return mimeToExt[mimeType] || '';
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get list of tracked temporary files
|
|
151
|
+
*/
|
|
152
|
+
getTempFiles() {
|
|
153
|
+
return [...this.tempFiles];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.FileManager = FileManager;
|
|
157
|
+
//# sourceMappingURL=FileManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../../../nodes/SbRender/services/FileManager.ts"],"names":[],"mappings":"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"}
|