A lightweight minimalist macOS application that is simple on the surface, but with powerful features baked in. Powered by FFMPEG, FFPROBE, MPV, SwiftExif, yt-dlp, rclone, whisper.cpp under the hood and written entirely in Swift / SwiftUI.
Completely free and open source. Private and local. (An optional update checker is activated by default, but it can be turned off.)
A passion project; I made this for myself because I need it to be efficient at my job. I just wanted to share.
Note that most of this app is vibe-coded.
brew tap aagedal/tap && brew install --cask aagedal-media-converter- Quick to launch and easy to use
- Batch Convert almost every video and audio file (alternative to Shutter Encoder or Handbrake)
- Play in full screen with TimeCode view and JKL playback controls (alternative to IINA or VLC)
- View and compare metadata, including C2PA presence check (alternative to MediaInfo)
- Download videos from websites, with support for scheduling and live stream download
- Screen recording with system sound, and optional separate microphone track (alternative to OBS)
- Transcribe video and audio files to SRT subtitles
- Upload to server after conversion
- Preview and encode almost every video file that exists
- Import and export image sequences (PNG, TIFF, EXR, DPX, JPEG 2000, and more) with audio association and frame rate control
- Export DCP (Digital Cinema Package) for cinema playback, with SMPTE-compliant JPEG 2000 XYZ color space encoding
- Batch conversion, watch folder, progress bar,
- Trim, crop, reroute or remove audio tracks, merge clips (if in the same format)
- Metadata view with comparison
- Lots of keyboard shortcuts: most features are accessible without using a mouse
- Lots of settings if you want to customize
- Automatically check for updates with a subtle update notification, can be turned off.
- Download from YouTube, TikTok etc. (yt-dlp)
- Transcribe to SRT (whisper.cpp)
- Upload to FTP (rclone)
- Check for C2PA signature (SwiftExif)
- Screen recording in HDR with system sound, and optional microphone recording to separate audio track
- Automatically encode all the files in the queue
- Reorder files by drag and drop to reorder encoding queue
- Delete files from the queue while encoding
- Automatically import files from a specified folder
- Works along the manual drag and drop window, collecting all encodes into one window
- Optional auto-delete and ignore files in the watch folder
- Activate by pressing the eye-icon in the main window toolbar
- Common NLE shortcuts like JKL and arrow keys
- A simple audio meter (CMD + A)
- Uses native macOS player for compatible files, for smooth playback even in reverse
- Invisible fallback to MPVKit player for files not supported by macOS natively (though reverse playback is less reliable)
- Trim using UI handles or I/O keyboard shortcut
- Timecode can be copied from the source, set manually or be removed
- Crop the video with on screen controls – accessible in the trim view by pressing C or the crop icon.
- Does not work with the Stream Copy preset
- Audio Track deletion and rearrangement
- Does not work with the Stream Copy preset
- Merge files into one if they are the same codec, resolution, frame rate, bit depth, and audio tracks.
- The first clip in the queue works as a master for timecode and crop.
- Allows trimming and Copy Stream at the same time, allowing you to trim and merge files without any quality loss. (Some metadata may be lost)
- Generate Audio Waveform Animations for audio only files
- 5 different presets, with color and normalization options
In the trim player there is a camera button that allows capturing still images. Images will automatically be captured at source resolution. By default the app will capture screenshots in JPEG XL. Format for screenshots and can be changed in the settings on a per bit-depth basis. Also a setting to specify what to do with alpha-channel video.
-
By default the app will remove spaces and special characters. æ, ø, å is replaced with ae, o and aa.
-
The app will preview the filename after processing
-
Warning if file already exists,
-
After encoding there is an icon to show the converted file in the export directory
-
After encoding there is a draggable icon, making it possible to drag and open the encoded file directly in another app to copy to a new directory.
-
Set default preset in the settings menu
-
Set default export location
- Per file comment field, to add an optional comment to the file metadata. Useful for embedding credit information
- Optional date tag (Generated [YYYYMMDD]), prefix and suffix in the comment field before the comment.
- View and compare metadata
Web browsers often refuse to autoplay long, looping videos with sound. The app shows a yellow
- Add to Encode Cue
- Convert Video Immediately (using the default preset).
All presets can be set as default on launch, and all except the default can be hidden from the preset selector.
Optimized for seamless silent loops. Encodes with x264 at CRF 23 (roughly 3–9 Mbps variable bitrate), strips audio, and limits the shortest edge to 1080 px for web playback. Automatic duration warning shows when a Video Loop clip exceeds 15 seconds so you can trim it before autoplaying on the web.
Same x264 settings as the muted loop but keeps every audio track as 128 kbps AAC while still capping the shortest edge at 1080 px.
Highly compatible H.264/AVC encoding with a choice between fast VideoToolbox hardware encoding or quality-focused libx264 software encoding with CRF control plus MP4, MOV, and MKV containers.
Modern 10-bit H.265/HEVC encoding. Hardware encoding via VideoToolbox keeps exports quick, while libx265 software encoding can be chosen for maximum compression efficiency.
Next-generation SVT-AV1 encoding with 10-bit support. The best compression efficiency in the app, but it is software only (no hardware acceleration on macOS).
Broadcast delivery format with hardware HEVC 10-bit 4:2:2, configurable resolution/framerate, automatic bitrate scaling, and preservation of all audio channels as 24-bit PCM.
Broadcast delivery format in an MXF container. AVC-Intra 10-bit 4:2:2 offers selectable classes (50/100/200 Mbps), resolution, and frame rate plus 4/8/16 mono audio channels as 24-bit PCM.
Copies the existing audio and video streams into a new file. Its strength is keeping the original codecs, metadata, and extension, so it pairs well with trimming or merging tasks.
Apple ProRes (yuv422p10) for edit-friendly masters. Includes the first video and audio streams, keeps 24-bit PCM audio, and targets standard ProRes bitrates. The default ProRes profile can be chosen in Preset Settings.
Lightweight proxy creation in HEVC, ProRes Proxy, or DNxHR with configurable resolution limits. Retains every audio channel as uncompressed PCM, which is ideal for offline editing and pairing with a dedicated Proxy sub-folder next to the source material.
SMPTE-compliant Digital Cinema Package export. Encodes video as JPEG 2000 in 12-bit XYZ color space with BT.709 input conversion, wraps to MXF using asdcp-wrap, and generates all required SMPTE XML (CPL, PKL, ASSETMAP, VOLINDEX). Supports 2K and 4K Flat, Scope, and Full container sizes at 24/25/30/48 fps with configurable bitrate (100–250 Mbps). Audio is exported as 24-bit PCM in a separate MXF track. Per-item metadata editing includes content title, content kind, annotation, rating, and audio language. Scaling modes: fit (letterbox) or fill (crop).
Import and export image sequences in PNG, JPEG, TIFF, EXR, DPX, BMP, TGA, SGI, JPEG XL, and JPEG 2000. Import auto-detects frame numbering and supports gaps. Audio files can be associated with a sequence for playback and export. Frame rate is configurable per-sequence and can be auto-derived from associated audio duration. Exports include optional metadata sidecar files (Markdown or JSON) with color space, codec, and camera information.
Animated still sequence built as GIF, AVIF, or animated PNG (APNG), selectable from the Preset Settings menu.
Stereo down-mix AAC file that keeps stereo spacing while drastically reducing file size.
Uncompressed WAV export that retains every audio channel wherever possible.
Ten custom presets (C1–C10) let you supply your own output arguments, suffixes, and extensions. Input parameters are handled for you, but note that -copy paths cannot combine with the crop or audio-routing toggles that live in Preset Settings.
| Minimum | |
|---|---|
| macOS | 15.0 (Sequoia) or later |
| Hardware | Apple Silicon (M1 or later) |
- Launch the app.
- Drag video files onto the window or click the plus button to import files.
- Select an Export Preset from the toolbar menu.
- Hit the green Convert button or press ⌘⏎.
Note that this is a sparetime project. I this is a passion project I don't get paid for.
This project is distributed under the GNU General Public License, version 3.0. See the LICENSE file for the complete text.
The bundled FFmpeg binary is compiled with --enable-gpl and is therefore also licensed under GPL v2 or later. This project chooses GPL v3 for all code, satisfying that requirement. See the original FFmpeg license in Licenses/ffmpeg-LICENSE.txt.
The bundled asdcp-wrap binary is from asdcplib by John Hurst, licensed under the BSD 3-Clause License. See Licenses/asdcplib-LICENSE.txt.
The DCP (Digital Cinema Package) export feature's color processing was informed by the DCP-o-matic project's excellent documentation on DCI XYZ color space conversion. DCP-o-matic is a free, open-source DCP creator — check it out at https://github.com/cth103/dcpomatic.
Metadata inspection and C2PA content authenticity features are powered by SwiftExif.
PS! This app was previously called Aagedal VideoLoop Converter. Aagedal Media Converter is the same app, just with a new name that better reflects what it has become.
