Convert DVR to HEVC — Free Online Tool
Convert DVR recordings to HEVC (H.265) format, re-encoding the video stream with libx265 to dramatically reduce file size while preserving surveillance or broadcast footage quality. HEVC's superior compression makes it ideal for archiving large DVR libraries that would otherwise consume significant storage.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your DVR file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
DVR files typically store video encoded with H.264 (libx264) or MJPEG alongside AAC or MP3 audio, optimized for fast writing during live capture rather than storage efficiency. This conversion fully re-encodes the video stream using the libx265 encoder, applying HEVC compression that can reduce file size by 40–50% compared to the original H.264 content at equivalent visual quality. Because HEVC is a video-only output format in this context, the audio stream is not carried over — the output .hevc file contains only the re-encoded video. The CRF (Constant Rate Factor) quality model is used, meaning the encoder dynamically adjusts bitrate frame-by-frame to maintain consistent perceptual quality rather than targeting a fixed bitrate, which suits the variable-motion nature of surveillance and broadcast footage.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg tool, which handles all demuxing, decoding, encoding, and muxing. In this browser-based tool, FFmpeg runs as a WebAssembly binary (FFmpeg.wasm) entirely within your browser — no data leaves your device. |
-i input.dvr
|
Specifies the input DVR file. FFmpeg will probe the file to detect the proprietary DVR container structure and identify the internal video codec (typically H.264 or MJPEG) and audio codec (typically AAC or MP3) before beginning decoding. |
-c:v libx265
|
Selects the libx265 software encoder to re-encode the video stream as HEVC (H.265). This fully decodes the DVR's original video and re-compresses it using H.265, which achieves roughly double the compression efficiency of the H.264 commonly found in DVR recordings. |
-crf 28
|
Sets the Constant Rate Factor to 28, which is the libx265 default and balances compression and visual quality well for surveillance and broadcast content. Unlike the DVR source's H.264 CRF scale where 23 is default, libx265's CRF 28 targets a perceptually equivalent quality level, resulting in significantly smaller output files. |
-x265-params log-level=error
|
Passes the log-level=error parameter directly to the libx265 encoder, suppressing the per-frame verbose statistics that x265 normally prints during encoding. This does not affect the encoded video quality or output file — it only cleans up the console output during conversion. |
output.hevc
|
Defines the output as a raw HEVC bitstream file with the .hevc extension. This format contains only the re-encoded video track with no container wrapper, meaning the DVR recording's audio track and any proprietary metadata are not included in the output. |
Common Use Cases
- Archiving weeks or months of DVR surveillance footage to free up hard drive or NAS space without purchasing additional storage hardware
- Compressing broadcast capture recordings from a DVR before transferring them to a media server like Plex or Jellyfin that supports HEVC playback
- Preparing DVR security footage for long-term cold storage where file size is the primary concern and re-encoding time is not a bottleneck
- Reducing the size of DVR recordings before sharing them with insurance companies or law enforcement where email or upload size limits are a constraint
- Transcoding a large library of legacy DVR recordings to HEVC as part of a storage consolidation or media migration project
- Creating a compressed reference copy of a DVR broadcast capture for video editing or review, saving the original for archival purposes
Frequently Asked Questions
Yes, this is a lossy re-encoding process. The DVR footage — already compressed with H.264 or MJPEG — is decoded and then re-compressed with libx265 at a default CRF of 28. Each generation of lossy encoding introduces some additional quality degradation, though at CRF 28 the loss is generally imperceptible on typical surveillance or broadcast content. If you need to minimize generation loss, lower the CRF value (e.g., CRF 18) for higher quality at the cost of larger file size.
The HEVC (.hevc) container is a raw bitstream format that carries only video data — it has no container structure capable of multiplexing audio streams alongside video. DVR files typically contain AAC or MP3 audio, but this audio is discarded during conversion to a raw .hevc file. If you need to preserve the audio, consider converting the DVR file to a container format like MKV or MP4 that supports both HEVC video and audio tracks.
HEVC (H.265) typically achieves 40–50% smaller file sizes than H.264 at equivalent visual quality. For DVR recordings originally encoded with H.264, you can expect the .hevc output to be roughly half the size of the source file at the default CRF 28 setting. MJPEG-encoded DVR footage, which is significantly less efficient than block-based codecs, may compress even more dramatically — sometimes to 20–30% of the original size.
Change the CRF value in the -crf flag. Lower values produce higher quality and larger files — CRF 18 is near-visually lossless for most content, while CRF 28 (the default) offers a good balance between compression and quality for surveillance footage. CRF 35–40 is appropriate if maximum storage savings are the priority and some visible quality loss is acceptable. The full adjusted command would look like: ffmpeg -i input.dvr -c:v libx265 -crf 18 -x265-params log-level=error output.hevc
Yes. On Linux or macOS, you can loop over DVR files in a directory with: for f in *.dvr; do ffmpeg -i "$f" -c:v libx265 -crf 28 -x265-params log-level=error "${f%.dvr}.hevc"; done. On Windows Command Prompt, use: for %f in (*.dvr) do ffmpeg -i "%f" -c:v libx265 -crf 28 -x265-params log-level=error "%~nf.hevc". This is particularly useful for archiving large DVR libraries and is one reason the FFmpeg command is displayed on this page — the browser tool processes one file at a time, while the desktop command handles bulk jobs without the 1GB file size constraint.
Yes, if you run this FFmpeg command locally on your desktop. Replace -c:v libx265 with -c:v hevc_nvenc (NVIDIA GPUs), -c:v hevc_amf (AMD GPUs), or -c:v hevc_videotoolbox (Apple Silicon/macOS) to leverage hardware encoding. Hardware encoders are significantly faster but may produce slightly larger files at the same CRF compared to the software libx265 encoder. Note that the browser-based tool uses FFmpeg.wasm, which runs libx265 in software only and does not have access to GPU hardware encoders.
Technical Notes
DVR files are proprietary container formats produced by digital video recorders, and their internal structure varies significantly by manufacturer and device firmware. FFmpeg has broad but not universal support for DVR demuxing — if your specific DVR device produces a non-standard variant, you may encounter demuxing errors that this tool cannot resolve. The default video codec in DVR recordings is H.264 (libx264), though some older or budget DVR systems use MJPEG, which is far less efficient. Both are fully decoded before libx265 re-encodes the output. The -x265-params log-level=error flag suppresses the verbose per-frame encoding statistics that libx265 normally emits, keeping console output clean without affecting the encoded output. Because the output format is a raw HEVC bitstream (.hevc) with no container wrapper, metadata such as recording timestamps, camera channel identifiers, and GPS coordinates — which some DVR systems embed in their proprietary container — will not be preserved in the output file. Frame rate, resolution, and pixel format are passed through from the source and re-encoded as-is by libx265. HDR content from DVR sources that support it (uncommon but present in newer 4K surveillance systems) will be re-encoded by libx265, which supports HDR10 passthrough, though tone mapping is not applied by this command.