feat: add video compression feature using ffmpeg.wasm - #1094
Devangee20 wants to merge 5 commits into
Conversation
|
@Devangee20 is attempting to deploy a commit to the magic-peach1's projects Team on Vercel. A member of the Team first needs to authorize it. |
✅ PR Format Check Passed — @Devangee20Basic format checks passed. A maintainer will review your code changes. This does not mean the PR is approved — it just means the format is correct. |
👋 Thanks for your PR, @Devangee20!Welcome to Reframe — a browser-based video editor built for everyone 🎬
What happens next
Quick checklist
Useful links
Happy coding! 🎉 |
|
HI @magic-peach , |
|
Hi @Devangee20 — thanks for this, and sorry for the wait. I'd like to get this merged, but it adds To get it unblocked:
Could you take a look within the next 14 days? If I don't hear back by then I'll close it to keep the queue manageable — but you're very welcome to reopen it any time after that. Thanks again for contributing to Reframe 🙏 |
Resolved merge conflicts against current main (next.config.ts, package.json). Along the way, fixed issues this PR's own changes introduced: - next.config.ts: restored output: "export" (this branch had disabled it to work around headers() being ignored under static export — the correct fix, per earlier maintainer feedback on reframe-oss#1509's identical issue, is to drop the headers() block entirely since those COOP/COEP headers already live in vercel.json/netlify.toml, not to disable static export). - layout.tsx: the merge left duplicate font/ErrorBoundary imports (one pointing at a redundant passthrough wrapper this PR added). Consolidated to the single real ErrorBoundary import. - ExportSettings.tsx / VideoCompressor.tsx: the new Compress Video toggle and preset select had <label> elements not associated with their controls (jsx-a11y/label-has-associated-control) — added matching id/htmlFor pairs. - ExportSettings.stories.tsx: this PR added a required videoFile prop to ExportSettings without updating its story, breaking typecheck. Supplied videoFile: null in the story's args. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L5gqyU5QKQtLAza6hL6dXv
✅ Deploy Preview for reframe-os ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Rebased onto current main and fixed a few things along the way:
|
Description - Added a client-side VideoCompressor component that leverages ffmpeg.wasm via CDN. This feature allows users to compress uploaded videos directly in the browser, reducing bandwidth requirements before export. Included robust initialization logic to ensure script readiness and added a user-friendly UI for selecting compression presets ("Balanced" vs "Smallest Size").
Related Issue - Closes #1003
Type of Contribution
Participant Info
Screen Recording
Recording / Loom link: ## Checklist
compressed_video.3.mp4
bun run lintpasses (no ESLint errors)bunx tsc --noEmitpasses (no TypeScript errors)aria-label/ accessible namesconsole.logstatements left in