Convert CAVS to WebM — Free Online Tool

Convert CAVS (Chinese Audio Video Standard) files to WebM using VP9 video and Opus audio codecs — transforming a broadcast-oriented Chinese national standard format into an open, royalty-free web format natively supported by Chrome, Firefox, and Edge. This is particularly useful for making CAVS content accessible on the modern web without proprietary codec dependencies.

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

CAVS files use a Chinese national standard codec (AVS) for video and typically PCM or Chinese-standard audio. During this conversion, the video stream must be fully re-encoded from AVS to VP9 (libvpx-vp9), and the audio is transcoded to Opus (libopus) — there is no stream-copy possible here since neither the video nor audio codec is shared between the two formats. The output is wrapped in a Matroska-based WebM container optimized for HTTP streaming and HTML5 playback. VP9 with CRF-based quality control produces competitive compression compared to the original CAVS encoding, and Opus at 128k delivers excellent perceptual audio quality at a relatively small bitrate.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the underlying engine that powers this browser-based tool via WebAssembly (ffmpeg.wasm). The same command can be run identically on a desktop FFmpeg installation.
-i input.cavs Specifies the input CAVS file. FFmpeg detects the AVS video codec and associated audio codec from the CAVS container and prepares both streams for decoding and re-encoding.
-c:v libvpx-vp9 Selects the VP9 encoder (libvpx-vp9) for the video stream. This is required because WebM only accepts VP8, VP9, or AV1 video — the CAVS source's AVS codec cannot be placed into a WebM container and must be fully re-encoded.
-c:a libopus Selects the Opus encoder (libopus) for the audio stream. Opus is the preferred audio codec for WebM, offering excellent quality at low bitrates and full support across Chrome, Firefox, and Edge.
-crf 33 Sets the Constant Rate Factor for VP9 to 33, controlling output video quality on a scale of 0 (lossless) to 63 (lowest quality). A value of 33 is a balanced default for web delivery — lower values like 20 improve quality at the cost of file size.
-b:a 128k Sets the Opus audio bitrate to 128 kilobits per second. At this bitrate, Opus delivers perceptually transparent audio for most content types including speech and music typical of broadcast CAVS sources.
-b:v 0 Sets the video bitrate target to zero, which is a required flag to enable pure CRF quality mode in VP9. Without this flag, the -crf setting is overridden by a default bitrate cap, preventing the encoder from allocating bits freely based on scene complexity.
output.webm Specifies the output filename with the .webm extension. FFmpeg uses this extension to automatically select the WebM container (Matroska-based), which wraps the VP9 video and Opus audio streams in a format optimized for web streaming.

Common Use Cases

  • Publishing archived Chinese broadcast footage or CAVS-encoded government media online, where browsers require WebM or MP4 for native playback
  • Embedding CAVS educational or training content into a web application without requiring users to install proprietary CAVS decoders
  • Transcoding CAVS video from Chinese digital television recordings into a format compatible with open-source video players and platforms like PeerTube
  • Converting CAVS sports or news broadcast clips into WebM for use in web-based video editors or CMS platforms that support open formats
  • Archiving and redistributing CAVS content in a royalty-free container to comply with open-media policies in international publishing workflows
  • Preparing CAVS-encoded video for HTML5 <video> tags where only open codecs (VP9/Opus) are acceptable, such as on privacy-focused or open-source web platforms

Frequently Asked Questions

Yes, this is a lossy-to-lossy conversion. The CAVS video is decoded and re-encoded to VP9, and the audio is transcoded to Opus — both processes introduce a generation of compression loss. However, VP9 at the default CRF 33 is designed to preserve perceptual quality efficiently, and Opus at 128k is generally transparent for most content. If you need the highest possible output quality, lower the CRF value (e.g., to 20 or 16) at the cost of a larger file size.
The WebM container only supports VP8, VP9, and AV1 video codecs by specification. CAVS uses the AVS (Audio Video Coding Standard) codec, which is entirely incompatible with WebM's codec requirements. This means a full re-encode from AVS to VP9 is mandatory — there is no lossless remux path between these two formats.
It depends heavily on the original CAVS bitrate and the VP9 CRF setting used. VP9 is generally a very efficient codec, often matching or exceeding H.264 compression at the same quality level, and is competitive with AVS. At the default CRF 33, the WebM output may be slightly smaller or similar in size to the CAVS source. If the original CAVS file was broadcast-quality (high bitrate), the WebM will likely be significantly smaller due to VP9's efficiency at lower bitrates.
WebM does support subtitles (WebVTT) and multiple audio tracks at the container level, but CAVS files typically do not carry embedded subtitle streams or multiple audio tracks — it is a broadcast-focused format with limited container flexibility. As a result, you are unlikely to lose subtitle or audio track data in practice, but if your CAVS source somehow contains such streams, they will not be automatically carried over by this command without additional flags.
Yes. To adjust video quality, change the -crf value: lower numbers (e.g., -crf 20) give higher quality and larger files, while higher numbers (e.g., -crf 40) give lower quality and smaller files. Valid VP9 CRF values range from 0 to 63. To change audio quality, modify the -b:a value, for example replacing 128k with 192k for higher-fidelity Opus audio. The -b:v 0 flag must remain to enable pure CRF mode for VP9.
Yes. On Linux or macOS, you can use a shell loop: for f in *.cavs; do ffmpeg -i "$f" -c:v libvpx-vp9 -c:a libopus -crf 33 -b:a 128k -b:v 0 "${f%.cavs}.webm"; done. On Windows Command Prompt, use: for %f in (*.cavs) do ffmpeg -i "%f" -c:v libvpx-vp9 -c:a libopus -crf 33 -b:a 128k -b:v 0 "%~nf.webm". Note that this browser-based tool processes one file at a time; the desktop FFmpeg command is better suited for batch jobs, especially for files over 1GB.

Technical Notes

CAVS (AVS1/AVS2) is a Chinese national standard developed by the Audio Video Coding Standard Working Group of China, primarily used in Chinese digital broadcast and IPTV infrastructure. FFmpeg supports CAVS decoding but the format is rarely encountered outside of Chinese broadcasting contexts. During conversion, FFmpeg decodes the AVS video bitstream and the associated audio (commonly DTS, AC-3, or Chinese-standard audio) and re-encodes both to VP9 and Opus respectively. The -b:v 0 flag is essential — without it, VP9 operates in a constrained bitrate mode that ignores CRF, so this flag forces the encoder into pure quality-based (VBR) mode where CRF is the sole quality control. WebM does not support CAVS-originated metadata fields like broadcast timestamps or Chinese DTV service descriptors, so any such metadata will be lost in conversion. The output WebM file gains significant advantages: native browser playback, HTTP range request support for streaming, and compatibility with open-source media infrastructure. Note that VP9 encoding is computationally intensive compared to simpler remux operations — expect longer processing times for high-resolution or long-duration CAVS files, especially in the browser via WebAssembly.

Related Tools