[object Object]

← back to Dw Marketing Reels

build-reel: mux silent AAC track into every reel — IG Reels require audio (no-audio MP4 fails Meta processing w/ error 2207082)

59b2d6bbee09b6ed48748c6e5d3270eafcf1b8ef · 2026-07-14 09:04:59 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Files touched

Diff

commit 59b2d6bbee09b6ed48748c6e5d3270eafcf1b8ef
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Jul 14 09:04:59 2026 -0700

    build-reel: mux silent AAC track into every reel — IG Reels require audio (no-audio MP4 fails Meta processing w/ error 2207082)
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
 scripts/build-reel.mjs | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/scripts/build-reel.mjs b/scripts/build-reel.mjs
index 30822c5..88929be 100644
--- a/scripts/build-reel.mjs
+++ b/scripts/build-reel.mjs
@@ -202,7 +202,16 @@ ${anim}
   const found = findMp4(WS);
   if (found) {
     mkdirSync(join(ROOT, 'reels'), { recursive: true });
-    copyFileSync(found, join(ROOT, 'reels', outName));
+    const outPath = join(ROOT, 'reels', outName);
+    // Instagram Reels REQUIRE an audio track — a silent (no-audio) MP4 fails
+    // Meta processing with error 2207082. Mux in a silent AAC track so every
+    // reel is Reels-publishable. Falls back to a plain copy if ffmpeg is absent.
+    try {
+      execSync(`ffmpeg -y -i ${JSON.stringify(found)} -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:v copy -c:a aac -b:a 128k -shortest -movflags +faststart ${JSON.stringify(outPath)}`, { stdio: 'ignore' });
+    } catch {
+      console.warn('  (ffmpeg silent-audio mux failed — falling back to raw copy; reel may not be IG-Reels-publishable)');
+      copyFileSync(found, outPath);
+    }
     // manifest for the gallery
     const manPath = join(ROOT, 'data', 'reels.json');
     const man = existsSync(manPath) ? JSON.parse(readFileSync(manPath, 'utf8')) : [];

← 7d816dd auto-save: 2026-07-14T07:29:44 (2 files) — data/new-arrivals  ·  back to Dw Marketing Reels  ·  Add public /privacy + /terms pages (no-auth) for Meta app pu 390b976 →