voxflow 1.18.1 → 1.18.2
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/dist/index.js +1 -1
- package/lib/core/ffmpeg.js +17 -27
- package/package.json +2 -2
- package/skills/.claude-plugin/plugin.json +1 -1
package/lib/core/ffmpeg.js
CHANGED
|
@@ -17,37 +17,27 @@ let _resolvedFfmpegPath = null;
|
|
|
17
17
|
/**
|
|
18
18
|
* Resolve the bundled `ffmpeg-static` binary path.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* real
|
|
26
|
-
*
|
|
20
|
+
* ffmpeg-static is marked external in our ncc build (see package.json
|
|
21
|
+
* `build` script: `-e ffmpeg-static`), so at runtime `require('ffmpeg-static')`
|
|
22
|
+
* goes through Node's actual module resolution algorithm rather than the
|
|
23
|
+
* bundled-module map. That matters because ffmpeg-static's index.js computes
|
|
24
|
+
* its binary path with `path.join(__dirname, ...)` — and only when the module
|
|
25
|
+
* is loaded by the real Node loader does `__dirname` resolve to the actual
|
|
26
|
+
* package directory (e.g. `<install>/voxflow/node_modules/ffmpeg-static/`).
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
28
|
+
* If we let ncc inline ffmpeg-static, `__dirname` collapses to the bundle's
|
|
29
|
+
* own directory and the returned path points at a file that does not exist.
|
|
30
|
+
* Worse, `require.resolve(...)` inside an ncc bundle is rewritten to return
|
|
31
|
+
* a numeric module ID, so it cannot be used to recover the real package
|
|
32
|
+
* directory. The only robust fix is keeping ffmpeg-static external.
|
|
33
33
|
*
|
|
34
|
-
* Returns: a path
|
|
35
|
-
*
|
|
34
|
+
* Returns: a binary path that exists, or null when ffmpeg-static is not
|
|
35
|
+
* installed at all.
|
|
36
36
|
*/
|
|
37
37
|
function resolveFfmpegStaticBin() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (direct && fs.existsSync(direct)) return direct;
|
|
42
|
-
|
|
43
|
-
// 2. ncc-safe recovery via package.json resolution.
|
|
44
|
-
try {
|
|
45
|
-
const pkgJson = require.resolve('ffmpeg-static/package.json');
|
|
46
|
-
const exe = process.platform === 'win32' ? 'ffmpeg.exe' : 'ffmpeg';
|
|
47
|
-
const recovered = path.join(path.dirname(pkgJson), exe);
|
|
48
|
-
if (fs.existsSync(recovered)) return recovered;
|
|
49
|
-
} catch { /* not installed */ }
|
|
50
|
-
|
|
38
|
+
let p = null;
|
|
39
|
+
try { p = require('ffmpeg-static'); } catch { /* not installed */ }
|
|
40
|
+
if (p && fs.existsSync(p)) return p;
|
|
51
41
|
return null;
|
|
52
42
|
}
|
|
53
43
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "voxflow",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.2",
|
|
4
4
|
"description": "AI audio content creation CLI — stories, podcasts, narration, dubbing, transcription, translation, and video translation with TTS",
|
|
5
5
|
"bin": {
|
|
6
6
|
"voxflow": "./dist/index.js"
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"voxflow"
|
|
45
45
|
],
|
|
46
46
|
"scripts": {
|
|
47
|
-
"build": "ncc build bin/voxflow.js -o dist --minify -e @remotion/renderer && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js",
|
|
47
|
+
"build": "ncc build bin/voxflow.js -o dist --minify -e @remotion/renderer -e ffmpeg-static && rm -rf dist/cli && node scripts/check-no-asset-rewrite.js",
|
|
48
48
|
"build:bundle": "node scripts/build-bundle.mjs",
|
|
49
49
|
"prepublishOnly": "npm run build:bundle && npm run build",
|
|
50
50
|
"lint": "eslint lib/ bin/ tests/",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "voxflow",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.2",
|
|
4
4
|
"description": "AI voice CLI bundled as 6 skills (hub, podcast, transcribe, video, slice, card). Synthesize speech in 200+ voices across 40+ languages, generate multi-speaker AI podcasts, transcribe audio/video with word-level timestamps, dub videos from SRT subtitles, run end-to-end video translation, turn long articles into vertical card video reels via Remotion, and turn text into polished shareable card images or narrated card videos. Backed by a hosted TTS/ASR/LLM/render service with per-user quota (free tier 10K/mo).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "VoxFlow",
|