Skip to content

franzaps/videorazor

Repository files navigation

Video Razor

A minimal, focused Android video trimmer.

Features

  • Nondestructive trimming — Uses native MediaMuxer stream copy to avoid re-encoding
  • Precision mode — Hold trim handles for 2s to zoom 4x for frame-accurate trimming
  • Share intent support — Receive videos shared from other apps
  • Audio removal option — Toggle to strip audio track
  • Replace or save new — Choose to overwrite original or create new file
  • Instant share — Opens share sheet immediately after export

Build

Open in Android Studio and build, or:

# First time setup (if no gradlew)
gradle wrapper

# Build debug APK
./gradlew assembleDebug

APK output: app/build/outputs/apk/debug/app-debug.apk

Technical Notes

Nondestructive Trimming

The app uses Android's native MediaMuxer for stream copy (instant, no quality loss). No FFmpeg dependency required.

Precision Zoom

When you hold a trim handle for 2 seconds, the timeline zooms 4x around that handle. This gives you frame-accurate control. Release to return to normal view.

Supported Formats

All formats supported by Android's MediaMuxer:

  • MP4 (H.264, H.265/HEVC)
  • WebM
  • 3GP

Permissions

  • READ_MEDIA_VIDEO (Android 13+) / READ_EXTERNAL_STORAGE (older)
  • VIBRATE for haptic feedback

Architecture

app/
├── MainActivity.kt          # Entry point, permission handling
├── VideoRazorApp.kt         # Application class
├── ui/
│   ├── VideoRazorScreen.kt  # Main screen with player + controls
│   ├── TrimTimeline.kt      # Thumbnail strip + trim handles + zoom
│   └── theme/Theme.kt       # Dark monochromatic theme
└── export/
    └── VideoExporter.kt     # Native MediaMuxer-based nondestructive export

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages