Initializing... drag & drop files here
Supports: CAVS
CAVS is a raw Chinese AVS video stream; PPM is a Netpbm portable pixmap, which is about as close to "a list of pixel values with a four-word header" as an image format gets. So this conversion is a frame grab that lands in a format with no compression whatsoever — useful when you need pixels that no decoder has second-guessed, and startling if you were expecting something JPEG-sized. This page covers what CAVS is, what the PPM will weigh, and the one control on the page that does not do what its label suggests.
| Property | Value |
|---|---|
| Full name | Audio Video coding Standard, part 2 — AVS1-P2 |
Profile in a .cavs file |
Jizhun (Base / Main) profile |
| Standard | Chinese national standard GB/T 20090.2-2006 |
| Approved | 2006 |
| Designed for | SD and HD digital television broadcasting in China |
| Design goal | Coding efficiency near H.264/AVC at lower decoder complexity |
| Bitstream shape | Start-code-delimited: sequence, picture, slice, macroblock, block layers |
| Container | Usually none — .cavs is a raw elementary video stream |
| Audio | None. An AVS1-P2 elementary stream carries picture only |
The container point matters for expectations. Like other raw elementary streams, a .cavs file has no header describing its own duration, so a player has to scan it. And because it is video-only, nothing about this conversion involves sound.
.cavs stream onto the page or click "+ Add Files". Several can be queued and each is processed with the same settings. Files are uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours — no sign-up, no watermark, never shared or made public.0, which grabs the opening picture. The field takes decimals, so 12.5 lands twelve and a half seconds in. Switching to "Multiple Screenshots" samples the whole stream at a Capture Rate you choose, from one frame every 0.1 s up to one every 10 s.The tool writes binary PPM (magic number P6), which spends one byte per colour sample at 8-bit and two bytes per sample at 16-bit, plus a short ASCII header. There is no quality slider on this page because there is nothing to trade off — the numbers below are arithmetic, not estimates:
| Frame size | 8-bit PPM | 16-bit PPM | Pixel-data arithmetic |
|---|---|---|---|
| 720 × 576 (PAL SD) | 1,244,175 bytes | 2,488,337 bytes | 720 × 576 × 3 = 1,244,160 |
| 1280 × 720 | 2,764,816 bytes | 5,529,618 bytes | 1280 × 720 × 3 = 2,764,800 |
| 1920 × 1080 | 6,220,817 bytes | 12,441,619 bytes | 1920 × 1080 × 3 = 6,220,800 |
Everything above the arithmetic is the fifteen-or-so bytes of P6 <width> <height> <maxval> header. Nothing else is stored: no colour profile, no EXIF, no timestamp. That predictability is the point of the format, and it is why PPM is a staple of image-processing pipelines and academic code that would rather parse ten lines than link a decoder.
This is the trap worth spelling out. Selecting 1-bit (Black & White) does not pack eight pixels into a byte — binary PPM has no sub-byte packing, so the file still spends one byte per sample. What changes is the header's maximum value, which drops from 255 to 1, meaning each channel can only be 0 or 1.
Measured on the same 720 × 576 frame: 8-bit produced 1,244,175 bytes with 21,943 distinct colours; 1-bit produced 1,244,173 bytes — two bytes smaller — with exactly 8 distinct colours. You lose essentially all of the colour information and save nothing. If you want a smaller file, lower the resolution or convert to a compressed format such as CAVS to PNG instead.
No — the conversion only runs in the direction shown. AVS1-P2 has a decoder in the open-source tooling this pipeline is built on but no encoder, so CAVS is an input format here and never an output. If you need to move a .cavs recording into something you can edit or share, CAVS to MP4 re-encodes it into H.264 in a container that everything opens.
The most likely reason is that it is not AVS1-P2. The AVS family continued after the Jizhun profile with AVS2 (IEEE 1857.4) and AVS3 (IEEE 1857.10), and those are different bitstreams that happen to share the family name. Only AVS1-P2 decodes here — an AVS2 elementary stream renamed to .cavs is correctly identified as AVS2 and then rejected as an unsupported codec. If you know your recording came from AVS2 or AVS3 equipment, it needs a decoder built for that generation.
The pipeline seeks to the time you enter and extracts one frame as a lossless PNG, then writes that PNG out as a PPM. Because CAVS is inter-frame coded, the decoder has to start from a preceding key picture and roll forward, so the frame you get is the one at or immediately after your timestamp rather than a guaranteed exact match. For a specific moment, nudge the value by a tenth of a second and compare.
One PPM per sampled frame, all at the same dimensions and bit depth. Be careful with the Capture Rate on a long recording, because there is no cap on the count and PPMs are large: a ten-minute stream sampled once per second is 600 files, and at 1920 × 1080 that is roughly 3.7 GB of uncompressed output. Start with a slow rate such as one frame every 5 or 10 seconds and tighten it once you can see what you are getting.
Because the video is compressed and the PPM is not. A single 1080p frame occupies 6.2 MB as a PPM, while a whole second of AVS1-P2 broadcast video at a typical bitrate is a fraction of that — inter-frame coding stores mostly the differences between pictures, and intra-frame coding throws away detail the eye does not track. Expanding one picture back to raw samples undoes all of that at once.
No. The CAVS decoder produces 8 bits per channel, so choosing 16-bit simply widens each sample to two bytes and doubles the file with no new information — 12.4 MB instead of 6.2 MB for a 1080p frame. It is worth choosing only when a downstream tool insists on 16-bit input, or when the PPM is an intermediate for further processing that would otherwise quantise twice.
They are three members of the same Netpbm family, distinguished by what each pixel holds. PPM (P6) is colour, three samples per pixel. PGM (P5) is greyscale, one sample per pixel, so it is a third the size. PBM (P4) is genuinely bi-level and is bit-packed, which is where the "1-bit saves space" intuition comes from — but this page writes PPM, so choosing 1-bit here gives you eight colours at full size rather than a packed bitmap.
Image editors that came from the Unix side of the world: GIMP, Krita, IrfanView, XnView and ImageMagick all read it directly, as do Python's Pillow and most scientific imaging libraries. What generally will not is a web browser, the Windows Photos app or a phone gallery — PPM has no registered IANA media type and no browser has ever decoded it. If you need something that just opens, PNG is the equivalent lossless target.
None. The PPM header holds the magic number, the width, the height and the maximum sample value, and the format has no provision for anything else — no timestamps, no colour profile, no source information. The conversion also strips metadata explicitly on the way out, so nothing sneaks through in a comment block. Record the source timecode yourself if you will need it later.
It can, and nothing here removes it. AVS1-P2 was designed for digital television, where interlaced SD and HD modes are common, and there is no deinterlacing step in this pipeline — so a frame grabbed from interlaced material shows the classic comb pattern on anything that moved between the two fields. Grabbing a moment with little motion avoids it; otherwise deinterlace the video first and convert from the progressive result.