Skip to content

feat: add client-side video merge/concatenate support#882

Open
chavanGaneshDatta wants to merge 7 commits into
magic-peach:mainfrom
chavanGaneshDatta:feature/video-merge-support
Open

feat: add client-side video merge/concatenate support#882
chavanGaneshDatta wants to merge 7 commits into
magic-peach:mainfrom
chavanGaneshDatta:feature/video-merge-support

Conversation

@chavanGaneshDatta

Copy link
Copy Markdown

Description

This PR adds full client-side video merge / concatenate support to Reframe using the existing FFmpeg.wasm pipeline.

Previously, Reframe only supported workflows involving a single uploaded video. With this implementation, users can now upload multiple clips, rearrange them, preview individual clips, and export them as a single merged video directly in the browser.

Features Implemented:
Added support for multiple video uploads
Added clip sequencing UI
Added clip reordering support (move up/down)
Added clip removal support
Added clickable clip previews
Integrated multi-video merge support into export workflow
Implemented client-side video merging using FFmpeg.wasm
Added clip normalization pipeline for stable playback across different video formats
Added merged video metadata extraction (resolution support)
Preserved existing single-video workflows without regressions
Improved accessibility for interactive clip controls

Related Issue

Closes #427

Type of Contribution

  • Bug fix
  • New feature
  • Documentation update
  • GSSoC contribution

Participant Info

Screen Recording

Reframe.Resize.trim.and.export.videos.in.your.browser.-.Brave.2026-05-21.23-54-17.-.Trim.mp4

Exported Successfully Image

image

Output Merged Video

Media.Player.2026-05-22.00-02-12.mp4

Checklist

  • I have read the contribution guidelines
  • My changes follow the project structure
  • I have tested my changes in Chrome, Firefox, and Safari
  • bun run lint passes (no ESLint errors)
  • bunx tsc --noEmit passes (no TypeScript errors)
  • New interactive elements have aria-label / accessible names
  • No console.log statements left in
  • This PR is related to a valid issue
  • Screen recording attached above (required for UI/feature/design changes)

@vercel

vercel Bot commented May 21, 2026

Copy link
Copy Markdown

@chavanGaneshDatta 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.

@github-actions

Copy link
Copy Markdown
Contributor

👋 Thanks for your PR, @chavanGaneshDatta!

Welcome to Reframe — a browser-based video editor built for everyone 🎬

🟠 GSSoC'26 PR detected — thanks for contributing under GirlScript Summer of Code 2026!

What happens next

  1. 🤖 Automated checks — build & TypeScript typecheck will run automatically
  2. Vercel preview — a preview deployment will be created (requires maintainer authorization for fork PRs)
  3. 👀 Code review — a maintainer will review your changes
  4. 🚀 Merge — once approved, your PR will be merged!

Quick checklist

  • PR title follows Conventional Commits (e.g. feat: add dark mode)
  • Linked the issue this PR closes (e.g. Closes #123)
  • Tested the changes locally (bun run dev)
  • Build passes (bun run build)

Useful links

Happy coding! 🎉

@github-actions github-actions Bot added level:advanced Advanced level - 55 pts type:bug Bug fix type:design UI/UX design type:docs Documentation type:feature New feature labels May 21, 2026
@github-actions

github-actions Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

✅ PR Format Check Passed — @chavanGaneshDatta

Basic 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.

@github-actions github-actions Bot added the gssoc'26 GirlScript Summer of Code 2026 label May 21, 2026
@chavanGaneshDatta chavanGaneshDatta changed the title Add client-side video merge/concatenate support feat: add client-side video merge/concatenate support May 21, 2026
@chavanGaneshDatta chavanGaneshDatta force-pushed the feature/video-merge-support branch from 340e8dd to bc08b22 Compare May 21, 2026 19:07
@chavanGaneshDatta

Copy link
Copy Markdown
Author

Hi @magic-peach 👋

Just following up on this PR whenever you get a chance.

The merge/concatenate feature implementation is complete, conflicts have been resolved with the latest upstream changes, and the workflow/build checks should now be up to date.

I’d really appreciate a review whenever possible. Thanks!

@magic-peach magic-peach removed type:bug Bug fix type:docs Documentation type:design UI/UX design labels May 24, 2026
@magic-peach

Copy link
Copy Markdown
Owner

@chavanGaneshDatta The client-side video merge feature using FFmpeg.wasm is a great addition! The approach of extending the existing ffmpeg.ts pipeline is correct.

However, there are some issues before this can be merged:

  1. No build/lint/typecheck CI has run — please push an update to trigger full CI.

  2. Merge conflicts with main — please rebase on the latest main and resolve conflicts.

Steps:

git fetch upstream
git rebase upstream/main
# Resolve conflicts in VideoEditor.tsx, FileUpload.tsx, useVideoEditor.ts
git push --force-with-lease origin feature/video-merge-support
  1. Careful review needed — since this touches src/lib/ffmpeg.ts (the core video processing engine), please make sure:
    • Existing single-video export still works correctly
    • The mergeVideos function doesn't break any existing exports
    • Memory is properly managed (files written to FFmpeg's virtual filesystem are cleaned up)

Once CI passes and conflicts are resolved, this will get a thorough review!

@chavanGaneshDatta chavanGaneshDatta force-pushed the feature/video-merge-support branch from 03486ac to 16c4528 Compare May 24, 2026 12:02
@github-actions github-actions Bot added type:bug Bug fix type:design UI/UX design type:docs Documentation labels May 24, 2026
@chavanGaneshDatta

chavanGaneshDatta commented May 24, 2026

Copy link
Copy Markdown
Author

Hi @magic-peach 👋

I’ve now completed the requested rebase against the latest upstream/main and resolved all merge conflicts in:

  • VideoEditor.tsx
  • FileUpload.tsx
  • useVideoEditor.ts

Additionally:

  • verified existing single-video export flow still works
  • verified multi-video merge/export workflow
  • fixed a post-rebase FFmpeg loading regression
  • confirmed cleanup handling for temporary FFmpeg virtual FS files
  • confirmed bun run build, bun run lint, and bunx tsc --noEmit all pass locally

Latest fixes and validation updates have been pushed to the PR branch for review. Thanks!

@chavanGaneshDatta chavanGaneshDatta force-pushed the feature/video-merge-support branch from 42922b6 to 828ee05 Compare May 26, 2026 15:56
@chavanGaneshDatta

Copy link
Copy Markdown
Author

Hi @magic-peach 👋

The latest rebase conflicts have now been fully resolved, including the remaining package.json, bun.lock, and src/lib/ffmpeg.ts conflicts from the final replayed commits.

I also verified again that:

  • bun run build passes
  • bun run lint passes
  • bunx tsc --noEmit passes

The updated branch has been force-pushed successfully and should now be ready for review. Thanks!

@chavanGaneshDatta

Copy link
Copy Markdown
Author

@magic-peach please check my pr whenever you have time. Thank You

1 similar comment
@chavanGaneshDatta

Copy link
Copy Markdown
Author

@magic-peach please check my pr whenever you have time. Thank You

@chavanGaneshDatta

Copy link
Copy Markdown
Author

@magic-peach please check my pr whenever you have time. Thank You

@chavanGaneshDatta

Copy link
Copy Markdown
Author

@magic-peach please check my pr whenever you have time. Thank You. It is pending since nearly a month

@chavanGaneshDatta

Copy link
Copy Markdown
Author

@magic-peach please check my pr whenever you have time. Thank You. It is pending since nearly a month

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc'26 GirlScript Summer of Code 2026 level:advanced Advanced level - 55 pts type:bug Bug fix type:design UI/UX design type:docs Documentation type:feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Add Video Merge / Concatenate Support

4 participants