Convert MKV to CAVS — Free Online Tool

Convert MKV files to CAVS format using H.264 video and AAC audio, encoded entirely in your browser with no file uploads required. CAVS is a Chinese national broadcast standard, and this tool produces a compliant output by encoding video through libx264 with CRF-based quality control — making it straightforward to prepare content for CAVS-compatible broadcast workflows.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

MKV is a flexible container that can hold a wide range of video codecs (H.264, H.265, VP9, PNG, MJPEG) and audio codecs (AAC, MP3, Opus, Vorbis, FLAC), along with subtitles, chapters, and multiple audio tracks. CAVS, by contrast, supports only H.264 video and AAC audio, and carries none of the rich metadata features. This means the conversion always involves re-encoding: the video stream is encoded to H.264 using libx264 at CRF 23, and the audio is encoded to AAC at 128k bitrate regardless of what codecs the source MKV contains. Any subtitles, chapters, additional audio tracks, and metadata embedded in the MKV will be dropped in the output, as the CAVS container has no mechanism to carry them.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — in this browser-based tool, this runs as a WebAssembly (FFmpeg.wasm) instance entirely client-side, with no data sent to a server.
-i input.mkv Specifies the input Matroska file, which may contain any combination of video (H.264, H.265, VP9, etc.), audio (AAC, MP3, Opus, FLAC, etc.), subtitles, and multiple tracks — all of which FFmpeg reads and then filters down to what CAVS can carry.
-c:v libx264 Forces re-encoding of the video stream using the libx264 encoder, producing H.264/AVC output — the only video codec the CAVS container supports, regardless of what codec the source MKV video stream uses.
-c:a aac Encodes the audio stream to AAC using FFmpeg's native AAC encoder, which is the only audio codec supported by the CAVS container — any source audio format in the MKV (MP3, Opus, Vorbis, FLAC, etc.) will be transcoded.
-crf 23 Sets the Constant Rate Factor for libx264 to 23, the x264 default, which delivers a good balance of visual quality and file size for H.264; lower values such as 18 produce higher quality and larger CAVS files, while higher values such as 28 or 35 reduce file size with more visible compression.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, a standard quality level suitable for most speech and stereo music content in the CAVS output; increase to 192k or 256k for higher-fidelity audio, particularly when the MKV source carried lossless FLAC audio.
output.cavs Defines the output filename with the .cavs extension, which signals FFmpeg to use the CAVS container format muxer — this container is minimal by design and will not carry the subtitles, chapters, or extra audio tracks that the source MKV may have contained.

Common Use Cases

  • Preparing video content for submission to a Chinese broadcaster or distribution platform that requires CAVS-compliant files
  • Converting an MKV archive of H.265 or VP9 video to the H.264-based CAVS format for playback on legacy Chinese set-top boxes or digital TV receivers that mandate the standard
  • Transcoding MKV files sourced from open-source productions or international streams into CAVS format for integration into a Chinese cable or satellite broadcast pipeline
  • Stripping out complex MKV metadata, multi-track audio, and subtitle layers to produce a lean, single-track CAVS file suitable for broadcast ingest systems with strict format requirements
  • Generating a reference CAVS-encoded file from an MKV master to verify codec and container compatibility before committing to a full batch conversion on a desktop workstation

Frequently Asked Questions

No — the CAVS container format does not support subtitles, chapters, or embedded metadata, so all of these are silently dropped during conversion. If your MKV contains subtitle tracks (ASS, SRT, PGS, etc.) or chapter markers, you should export them separately before converting if you need to preserve them. Only the primary video stream (re-encoded to H.264) and the first audio track (re-encoded to AAC) are carried into the output file.
It is always fully re-encoded to H.264 using libx264, regardless of the source codec. CAVS supports only H.264 video, so there is no stream-copy path available even if the source MKV happens to contain H.264 already. This means every conversion involves a transcode, which takes more processing time than a simple remux and introduces a generation of lossy compression.
FFmpeg selects the first audio track (or the default-flagged audio track) from the MKV when no explicit stream mapping is specified. CAVS supports only a single audio track, so all other audio streams in the MKV are discarded. If you need a specific audio track rather than the first one, you would need to modify the FFmpeg command with a '-map' flag to target the desired stream before running it locally.
The default CRF 23 with libx264 produces visually good quality for most content and is the standard default recommended by the x264 developers. If the source MKV was losslessly encoded (e.g., using PNG or FLAC streams), the CAVS output will be the first lossy generation, which is generally transparent at CRF 23. If the source was already lossy (e.g., H.264 or H.265), re-encoding introduces generational loss, so using a lower CRF value such as 18 can help minimize visible degradation at the cost of a larger file.
To adjust video quality, change the '-crf 23' value — lower numbers like 18 produce higher quality and larger files, while higher numbers like 28 or 35 produce smaller files with more compression. To change audio bitrate, replace '128k' in '-b:a 128k' with values like '192k' or '256k' for better audio fidelity. For example: 'ffmpeg -i input.mkv -c:v libx264 -c:a aac -crf 18 -b:a 192k output.cavs' gives a noticeably higher-quality result at the cost of a larger output file.
Yes — on Linux or macOS you can wrap the command in a shell loop: 'for f in *.mkv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.mkv}.cavs"; done'. On Windows Command Prompt, use: 'for %f in (*.mkv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.cavs"'. The browser-based tool processes one file at a time, so downloading FFmpeg and running it locally is the practical approach for bulk conversions.

Technical Notes

CAVS (Chinese Audio Video Standard, also known as AVS) is a Chinese national standard designed as a royalty-controlled alternative to H.264/AVC for domestic broadcast use. Despite the name, the FFmpeg CAVS output container in practice wraps H.264 video and AAC audio — libx264 and the native AAC encoder are the only supported codecs for this container in FFmpeg, meaning there is no native AVS1 or AVS2 codec path through this workflow. The CAVS container is inherently lossy and minimal: it carries no subtitle streams, no chapter metadata, no multiple audio tracks, and no rich tag metadata that MKV natively supports. FLAC or lossless audio in the source MKV will be transcoded to AAC at the specified bitrate, permanently discarding lossless fidelity. File sizes relative to the source MKV will vary significantly depending on the source codec — an MKV with H.265 video will typically produce a noticeably larger CAVS file at equivalent CRF because H.264 is generally less efficient than H.265. For archival or broadcast-critical workflows, it is strongly recommended to retain the original MKV and treat the CAVS output as a delivery copy only.

Related Tools