@lee-jisoo/n8n-nodes-mediafx 1.6.7 → 1.6.9
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.
|
@@ -97,10 +97,24 @@ function isASSFile(filePath) {
|
|
|
97
97
|
* Convert SRT content to ASS format with full styling support
|
|
98
98
|
*/
|
|
99
99
|
function convertSRTtoASS(srtContent, fontName, fontSize, primaryColor, outlineColor, outlineWidth, backColor, enableBackground, alignment, marginV, marginL, marginR, videoWidth, videoHeight) {
|
|
100
|
-
// BorderStyle
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
// BorderStyle=3 enables opaque box mode where BackColour determines the box color
|
|
101
|
+
// BorderStyle=1 is normal outline mode
|
|
102
|
+
let borderStyle;
|
|
103
|
+
let outline;
|
|
104
|
+
let shadow;
|
|
105
|
+
let effectiveOutlineColor;
|
|
106
|
+
if (enableBackground) {
|
|
107
|
+
borderStyle = 3; // Opaque box mode - BackColour becomes the box background
|
|
108
|
+
outline = 0; // No outline needed in box mode
|
|
109
|
+
shadow = 0;
|
|
110
|
+
effectiveOutlineColor = backColor; // Match outline to background for clean look
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
borderStyle = 1; // Normal outline mode
|
|
114
|
+
outline = outlineWidth;
|
|
115
|
+
shadow = 0;
|
|
116
|
+
effectiveOutlineColor = outlineColor;
|
|
117
|
+
}
|
|
104
118
|
const header = `[Script Info]
|
|
105
119
|
Title: Generated by MediaFX
|
|
106
120
|
ScriptType: v4.00+
|
|
@@ -111,7 +125,7 @@ PlayResY: ${videoHeight}
|
|
|
111
125
|
|
|
112
126
|
[V4+ Styles]
|
|
113
127
|
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
|
|
114
|
-
Style: Default,${fontName},${fontSize},${primaryColor},${primaryColor},${
|
|
128
|
+
Style: Default,${fontName},${fontSize},${primaryColor},${primaryColor},${effectiveOutlineColor},${backColor},0,0,0,0,100,100,0,0,${borderStyle},${outline},${shadow},${alignment},${marginL},${marginR},${marginV},1
|
|
115
129
|
|
|
116
130
|
[Events]
|
|
117
131
|
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
|
|
@@ -213,10 +227,15 @@ async function executeAddSubtitle(video, subtitleFile, style, itemIndex) {
|
|
|
213
227
|
tempAssFile = path.join(os.tmpdir(), `mediafx_sub_${Date.now()}_${Math.random().toString(36).substring(7)}.ass`);
|
|
214
228
|
await fs.writeFile(tempAssFile, assContent, 'utf-8');
|
|
215
229
|
finalSubtitlePath = tempAssFile;
|
|
230
|
+
// Debug: log ASS content for troubleshooting
|
|
231
|
+
console.log('[MediaFX] Generated ASS file:', tempAssFile);
|
|
232
|
+
console.log('[MediaFX] ASS Style line:', assContent.split('\n').find(line => line.startsWith('Style:')));
|
|
216
233
|
}
|
|
217
|
-
// 5. Build FFmpeg command
|
|
234
|
+
// 5. Build FFmpeg command with fontsdir for custom fonts
|
|
218
235
|
const escapedPath = escapeSubtitlePath(finalSubtitlePath);
|
|
219
|
-
const
|
|
236
|
+
const fontPath = font.path;
|
|
237
|
+
const fontDir = escapeSubtitlePath(path.dirname(fontPath));
|
|
238
|
+
const subtitlesFilter = `ass='${escapedPath}':fontsdir='${fontDir}'`;
|
|
220
239
|
const command = ffmpeg(video)
|
|
221
240
|
.videoFilters([subtitlesFilter])
|
|
222
241
|
.audioCodec('copy')
|
package/package.json
CHANGED