CatVideo Concatenator is a simple Android app written in Kotlin that allows users to select multiple videos from their device and concatenate them into a single video without transcoding. The app displays real-time text-based progress, preserves the original video orientation, and saves the output video to the device's camera roll.
If you like this app, you can support me via Ko-fi. 💜💜💜
- Select multiple videos from the device storage.
- Concatenate videos without re-encoding (fast and preserves original quality).
- Display progress updates: percentage complete, free space remaining, and estimated time left.
- Corrects video orientation so the output is not upside-down.
- Screen rotation is disabled during processing to prevent crashes.
- Optionally, users can support the developer via a clickable Ko-fi link in the app.
- The app lets the user select one or more videos from their device.
- Videos are processed on a background thread using Android's
MediaExtractorandMediaMuxer. - The app concatenates the video and audio tracks sequentially, adjusting timestamps to ensure smooth playback.
- Progress is reported in real-time to a
TextView, including:- Completion percentage
- Free space on the device
- Estimated time remaining
- The final concatenated video is saved in the device's
Moviesdirectory and is visible in the camera roll.
- Tap the “Select Videos” button.
- Choose multiple video files from your device.
- The app will display concatenation progress in real-time.
- Once complete, the output video is saved to your camera roll.
- Combine clips from an event into a single video.
- Merge multiple short recordings into one file for sharing.
- Quickly compile video highlights without quality loss.
- Export HDR videos without a HDR editing program
- The app does not transcode; all videos must have compatible codecs (e.g., H.264 video and AAC audio). Mixing incompatible formats may cause errors.
- The app assumes all videos have the same rotation. If videos have different orientations, some clips may appear sideways.
- Screen rotation is locked during processing to avoid crashes.
- The app only handles videos accessible via the system document picker (does not scan all internal storage automatically).
- Large files may take time depending on device performance and storage speed.
- Free space is reported in MB; ensure enough storage is available for the combined video.
- Written in Kotlin for Android using
MediaExtractorandMediaMuxer. - Background processing is done using a simple
Thread. - Output files are saved in
MoviesviaMediaStorefor immediate visibility in gallery apps. - Progress is reported to the main thread using
runOnUiThread.
