Initializing... drag & drop files here
Supports: DVR
.dvr is one of the least specific extensions in video. Most of the time it is a Microsoft DVR-MS recording from a Windows XP, Vista or Windows 7 Media Center box — an ASF-derived container holding MPEG-2 video with MPEG-1 Layer II or Dolby Digital audio. The rest of the time it is whatever a standalone CCTV recorder, satellite receiver or capture card decided to write, and those vary by manufacturer. This converter decodes whichever of those it can recognise and writes a single frame out as a Windows bitmap.
BMP is the usual ask here because the still is going somewhere that must not re-compress it again: an incident report, an insurance file, an old imaging tool, a legacy HMI panel. Before you pick a preset, read the writer table below — the three rungs on a BMP target are three different encoders, and only one of them leaves the pixels alone.
.dvr onto the page or click "+ Add Files". Recorder files run long, and the upload is almost always the slow part. Multiple files can be queued and converted with one set of settings.Each rung is a different code path, not a different number on the same dial. Measured on a 720x480 frame decoded from a .dvr recording:
| Preset | What it writes | Bits per pixel | Compression | File size at 720x480 | Use it when |
|---|---|---|---|---|---|
| High (applies by default) | 16-bit RGB555 raster, BITMAPINFOHEADER | 16 | None | 691,254 bytes | The still must not be palettised — reports, evidence, anything re-edited later |
| Medium | 256-colour palette, dithered, forced BMP v3 header | 8 | Run-length (BI_RLE8) | 66,050 bytes | A legacy tool that only reads classic 40-byte-header bitmaps |
| Low | 86-colour palette, dithered, BITMAPV5HEADER | 8 | Run-length (BI_RLE8) | 67,172 bytes | Small thumbnails where colour fidelity is irrelevant |
Two results from that measurement are worth flagging, because they contradict the usual folklore about BMP:
| Goal | Mode | Setting |
|---|---|---|
| The moment in an incident log | Specific Frame | Time (seconds) = seconds from the start of the file |
| A sequence around an event | Multiple Screenshots | 0.2 or 0.5 seconds per frame, on a pre-trimmed clip |
| A walk-through of a whole shift | Multiple Screenshots | 5 or 10 seconds per frame |
| A contact sheet for review | Multiple Screenshots + Preset Resolutions | 2 seconds per frame at 360p |
Timestamps are counted from the beginning of the file, not from the recorder's wall-clock overlay. On a multi-hour capture it is far quicker to cut the relevant window first with Video Cutter and then grab frames from the short clip.
Three failure modes account for nearly all rejected .dvr files, and only one of them has a fix here.
Copy protection. DVR-MS recordings made from broadcasts that asserted copy-protection flags are encrypted to the machine that recorded them and play back only on that machine. No third-party tool can decode them, and no setting on this page changes that.
A proprietary recorder format. Many standalone CCTV and DVR boxes write a container that exists only in their own player. If the file is rejected outright, export or transcode it once in the manufacturer's software to something standard, then convert that.
A truncated recording. A capture that was interrupted mid-write can decode partially or not at all. If the beginning of the file is intact, setting Time (seconds) to a point before the damage often still yields a frame.
And one thing that is not a failure: combing on moving subjects. DVR-MS and most recorder output is interlaced standard definition, and there is no deinterlacing stage in this pipeline, so the interlaced fields land in the bitmap as they were recorded. Deinterlace in a desktop editor if the still has to look clean.
.dvr file actually DVR-MS?Microsoft's own recordings normally carry the hyphenated .dvr-ms extension. A bare .dvr more often comes from a security recorder, a set-top box or a capture card, and those formats differ by vendor. The practical test is this converter: if the file is accepted, it contained a recognisable stream in a container we can open. If it is rejected, it almost certainly uses an undocumented format and needs the manufacturer's own software first.
On the High rung, yes — it writes a BI_RGB bitmap with no compression, at 16 bits per pixel. Medium and Low are not: both palettise the image to 8 bits per pixel and apply BI_RLE8 run-length compression, which is why they are roughly ten times smaller. If "uncompressed" is a requirement in a report or a chain-of-custody note, use High and say 16-bit RGB555 rather than 24-bit.
PNG, in most workflows. PNG at its top rung is true-colour and lossless, so the stored pixel values match the decoded frame exactly, and it is far smaller. The BMP High rung truncates each channel to five bits, so it is not a bit-exact record of the decode even though it applies no compression. Use DVR to PNG unless the receiving system specifically demands a .bmp.
Because BMP has no quality dial to search against. On JPEG-family targets the converter can binary-search the quality value until the output lands on a size you asked for; a bitmap's size is fixed by its dimensions and bit depth, so there is nothing to iterate. The levers that actually change a BMP's size here are the preset rung and Image resolution.
Only if the overlay was burned into the picture. Most CCTV recorders draw the date and time into the video itself, in which case it appears in the bitmap exactly as it does on playback. Timestamps carried as container metadata or as a separate subtitle-style track do not survive — a BMP header has nowhere to put them. Note the file's own timing before you convert if it matters.
Use Multiple Screenshots at 0.1 seconds per frame, which yields about ten stills per second of footage. That is finer than most recorder frame rates in practice, since a lot of CCTV runs at 5 to 15 fps. Trim the window down first — a minute at that rate is roughly 600 bitmaps, and at the High rung an SD frame is about 690 KB each.
Standard-definition recorders commonly store 720x480 or 720x576 with non-square pixels and flag the display aspect in the stream. A bitmap has no such flag, so the frame is written at its stored dimensions and shown with square pixels. For NTSC 4:3 material set Width x Height to 640x480; for PAL 4:3 set it to 768x576, and the still will match what a player displays.
It will scale to whatever you ask for, so choosing 2160p on a 720x480 recording gives you a 2160p bitmap made of interpolated pixels and a very large file — no detail is recovered. For enlargements, take the still at Keep original and enlarge it in a tool where you can choose the resampling method.
It is uploaded over an encrypted connection, decoded on our servers, and both the recording and the bitmaps are deleted automatically after a few hours. There is no sign-up, no watermark, and nothing is shared or made public. If you need the whole recording rather than a frame, DVR to MP4 produces a file that plays anywhere.