@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: 1=outline+shadow, 3=opaque box
101
- const borderStyle = enableBackground ? 3 : 1;
102
- const outline = enableBackground ? 0 : outlineWidth;
103
- const shadow = enableBackground ? 2 : 0;
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},${outlineColor},${backColor},0,0,0,0,100,100,0,0,${borderStyle},${outline},${shadow},${alignment},${marginL},${marginR},${marginV},1
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 subtitlesFilter = `ass='${escapedPath}'`;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lee-jisoo/n8n-nodes-mediafx",
3
- "version": "1.6.7",
3
+ "version": "1.6.9",
4
4
  "description": "N8N custom nodes for video editing and media processing (Enhanced fork with Speed control and Subtitle fixes)",
5
5
  "license": "MIT",
6
6
  "author": {