You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[BUG] Image Overlays are silently dropped during GIF exports #1578
The application features an "Image Overlay" tool that allows users to position a custom image or logo over their video. However, if the user selects GIF as the export format, the overlay is completely ignored, and the exported GIF will not contain the uploaded image.
This happens because the GIF export pipeline in exportVideo uses a dedicated two-pass logic (palettegen and paletteuse) to generate high-quality GIFs. However, this custom branch entirely skips the buildArguments() function and the filter_complex string, meaning the overlayInputName and overlayOptions variables are never passed to FFmpeg.
Steps to Reproduce
Upload a video file to the editor.
Scroll down to the "Image Overlay" section and upload an image (e.g., a logo).
Position the overlay on the video preview.
Go to the "Output format" section and select GIF.
Click Export.
View the resulting GIF—the image overlay is completely missing.
Expected Behavior
The exported GIF should retain the image overlay in the exact position, size, and opacity specified by the user, just like it does for MP4, WebM, and MKV exports.
Proposed Fix
In src/lib/ffmpeg.ts (inside exportVideo), the vfWithPaletteUse filter string needs to be updated to incorporate the overlay filter when an overlay image is provided, before passing the video stream to paletteuse. Additionally, the overlay image needs to be mapped as an input stream to the FFmpeg execution arguments for the second pass.
For example, the filter chain could be updated to: [0:v][2:v]overlay=W-w-20:H-h-20[with_overlay]; [with_overlay][1:v]paletteuse
Hey @Abhishek2005-ard, this issue has been assigned to you! 🎉 Please make progress within 5 days or it will be automatically unassigned due to inactivity.
Hey @Abhishek2005-ard, just a friendly reminder that this issue has had no activity for 2 days. Please leave an update or let us know if you need help! ⏰
Hey @Abhishek2005-ard, final warning! ⚠️ This issue has had no activity for 4 days and will be automatically unassigned in 24 hours if there is no update.
Activity
Abhishek2005-ard commentedon Jun 14, 2026
/assign
github-actions commentedon Jun 14, 2026
👋 Thanks for opening an issue, @Abhishek2005-ard!
Our maintainers will review this shortly 🚀
Before you start working
For GSSoC'26 contributors
If you're contributing under GirlScript Summer of Code 2026, please mention it in your comment when requesting assignment:
Architecture notes
Reframe is a static Next.js app with
output: "export". Key points:headers()innext.config.tswon't work — usevercel.jsoninsteadnot-found.tsxrequirespublic/404.html+vercel.jsonroutes configHappy contributing! ⭐ Star the repo if you find it useful!
github-actions commentedon Jun 14, 2026
Hey @Abhishek2005-ard, this issue has been assigned to you! 🎉 Please make progress within 5 days or it will be automatically unassigned due to inactivity.
github-actions commentedon Jun 16, 2026
Hey @Abhishek2005-ard, just a friendly reminder that this issue has had no activity for 2 days. Please leave an update or let us know if you need help! ⏰
github-actions commentedon Jun 21, 2026
Hey @Abhishek2005-ard, final warning!⚠️ This issue has had no activity for 4 days and will be automatically unassigned in 24 hours if there is no update.
github-actions commentedon Jun 26, 2026
This issue has been unassigned from @Abhishek2005-ard due to 5 days of inactivity and is open for anyone to pick up — comment
/assignto claim it!