What Is MKV?
MKV (Matroska Video) is an open-source multimedia container format developed since 2002. Not a codec — a "wrapper" that holds virtually any combination of video, audio, subtitles, and chapters.
What Can an MKV Contain?
| Element | Details |
|---|---|
| Video tracks | H.264, H.265, VP9, AV1, etc. |
| Audio tracks | AAC, AC3/Dolby, DTS, FLAC, MP3, Opus |
| Subtitles | SRT, ASS/SSA, PGS, VobSub — selectable |
| Chapters | Named markers |
| Metadata | Title, date, tags |
MKV vs MP4 vs AVI
| Feature | MKV | MP4 | AVI |
|---|---|---|---|
| Multiple audio tracks | ✅ | ✅ | Limited |
| Embedded subtitles | ✅ (many formats) | ✅ (limited) | ❌ |
| Chapters | ✅ | ✅ | ❌ |
| HTTP streaming | Limited | ✅ | ❌ |
| Apple native support | ❌ | ✅ | ❌ |
| Corruption recovery | ✅ | Partial | ❌ |
Basic FFmpeg Operations
Remux MKV to MP4 (no re-encoding)
ffmpeg -i video.mkv -c copy video.mp4
# Force AAC if audio is DTS/AC3
ffmpeg -i video.mkv -c:v copy -c:a aac -b:a 192k video.mp4
Extract Subtitles
ffprobe -v error -show_entries stream=index,codec_type,codec_name -of csv video.mkv
ffmpeg -i video.mkv -map 0:s:0 subtitles.srt
ffmpeg -i video.mkv -map 0:s:0 subtitles.ass
Add Subtitles
ffmpeg -i video.mkv -i subtitles.srt \
-c copy -metadata:s:s:0 language=eng video_with_subs.mkv
ffmpeg -i video.mkv -i subs_en.srt -i subs_es.srt \
-c copy \
-metadata:s:s:0 language=eng \
-metadata:s:s:1 language=spa \
video_multilang.mkv
Extract Audio Tracks
ffmpeg -i video.mkv -map 0:a:0 -c:a flac audio.flac
ffmpeg -i video.mkv -map 0:a:1 -c:a aac audio_2.aac
Compatible Players
| Player | MKV Support |
|---|---|
| VLC | ✅ Full |
| MPV | ✅ Full |
| Kodi | ✅ Full |
| Windows Media Player | ❌ |
| QuickTime | ❌ |
When to Use MKV
Use MKV for: local files with multiple languages/subtitles, lossless Blu-ray quality preservation.
Use MP4 for: web streaming, Apple devices, sharing with non-technical users.
Conclusion
MKV is the most flexible video container for high-quality content with multiple tracks. For universal distribution, remux to MP4 without re-encoding with -c copy.
Advanced Use Cases
Multi-platform distribution: each social network has preferred specs — YouTube accepts MP4 H.264 up to 4K 60fps with AAC 384 kbps; Instagram Reels prefers MP4 H.264 at 1080×1920 vertical; TikTok recommends MP4 H.264/H.265 up to 60 seconds with bitrate of 5-10 Mbps; LinkedIn caps at 5 GB and prefers MP4 H.264. Converting your master to each platform's exact specs before upload guarantees that the server's internal re-encoding (which always happens) starts from optimal input, preserving maximum final quality. Professional editing: editors like DaVinci Resolve, Premiere Pro and Final Cut Pro work best with intermediate codecs (ProRes, DNxHD, CineForm) rather than H.264 final-delivery — converting your material to an intermediate format before editing dramatically accelerates render and avoids generation loss in multi-track timelines. Live streaming: OBS Studio and Streamlabs require input in H.264/H.265 with keyframes every 2 seconds for HLS; converting recordings to this preset facilitates uplink.
Best Practices and Professional Tips
Two-pass encoding vs CRF: for specific target file size (e.g. "max 25 MB for WhatsApp") use two-pass; for target quality use CRF (Constant Rate Factor) with values 18-23 for H.264, 22-28 for H.265 — visually-lossless under normal conditions. Audio passthrough: if your destination video supports the original audio codec, use stream copy (-c:a copy in FFmpeg) — preserves 100% audio quality without re-encoding. Container vs codec: distinguish between container (MP4, MKV, MOV) and internal codec (H.264, H.265, AV1). Changing only the container is a trivial operation without re-encoding (seconds vs minutes for re-encode). HDR preservation: if your source is HDR10/Dolby Vision, ensure the destination also supports HDR — converting HDR to SDR permanently loses dynamic range. Frame rate: never increase frame rate (24→60 doesn't add real information); reducing it (60→30) removes frames without visible loss for most content.
Compatibility and Technical Considerations
KaijuConverter processes video with FFmpeg 6.x compiled with all critical extensions: x264/x265 for H.264/H.265 encoding with configurable presets (ultrafast to veryslow, default medium for balance), libvpx-vp9 for WebM, SVT-AV1 for modern AV1 encoding with 10-bit color space support, libfdk-aac for AAC audio, libopus for Opus. We support files up to 500 MB and resolutions up to 4K (3840×2160) at 60 fps. The cloud pipeline uses hardware acceleration when available (NVENC/QuickSync) which accelerates 5-10× over CPU encoding. Processing time: a 1080p 60-second video typically converts in 12-30 seconds depending on destination codec and preset. 4K HDR material may require 2-5 minutes. Limitations: DRM-protected files (Netflix, Disney+, Amazon Prime, Apple TV+) cannot be converted — DRM blocks stream extraction. Very specific proprietary codecs (RED RAW, ARRI Alexa raw, Sony X-OCN) require dedicated software. Privacy: video encrypted in transit (TLS 1.3), processed in isolated Docker containers, automatically deleted after 2 hours with secure multi-pass overwrite.
Related conversions
Common video conversions that pair well with this guide: