Convert FLV to DVR — Free Online Tool

Convert FLV (Flash Video) files to DVR format using H.264 video and AAC audio encoding — all processed locally in your browser with no uploads required. This tool is especially useful for repurposing legacy Flash-era web video into a format compatible with digital video recorder storage and playback systems.

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

FLV files typically contain H.264 or Sorenson Spark video paired with AAC or MP3 audio inside Adobe's Flash container. During this conversion, the video stream is re-encoded to H.264 (libx264) and the audio is re-encoded to AAC — both of which are standard codecs used in DVR container files. Because FLV's most common modern codec (H.264) matches the DVR output codec, the quality loss during video re-encoding is minimized when using the default CRF 23 setting, but a full transcode still occurs because the container format and stream packaging must change. The resulting DVR file is structured for compatibility with digital video recorder playback systems rather than browser-based streaming.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg program, the open-source multimedia processing engine that handles decoding the FLV container and its streams, transcoding, and writing the DVR output file.
-i input.flv Specifies the input file — in this case an FLV (Flash Video) file, which FFmpeg will demux to extract the video and audio streams for transcoding into the DVR format.
-c:v libx264 Sets the video encoder to libx264, which encodes the output video stream as H.264. This is the standard video codec for DVR output and ensures broad compatibility with DVR playback hardware and software, regardless of whether the source FLV used H.264 or older codecs like Sorenson Spark.
-c:a aac Sets the audio encoder to AAC (Advanced Audio Coding), which is the default and most compatible audio codec for DVR containers. The audio from the FLV source (whether originally AAC or MP3) is decoded and re-encoded to AAC for the DVR output.
-crf 23 Sets the Constant Rate Factor for the H.264 video encode to 23, which is the libx264 default and provides a good balance between file size and visual quality for archived DVR footage. Lower values (e.g., 18) increase quality and file size; higher values (e.g., 28) reduce both.
-b:a 128k Sets the AAC audio bitrate to 128 kilobits per second, which is sufficient for the voice audio and ambient sound typical in DVR surveillance recordings. For broadcast-captured audio with music or complex soundscapes from FLV source files, 192k or 256k would provide noticeably better fidelity.
output.dvr Specifies the output filename with the .dvr extension, which tells FFmpeg to write the transcoded H.264 video and AAC audio into a DVR container — the proprietary format used by digital video recorder systems for storing captured television and surveillance footage.

Common Use Cases

  • Archiving old Flash-based CCTV or security camera footage that was exported as FLV and needs to be ingested into a modern DVR storage or review system
  • Converting recorded live-stream FLV captures from legacy Flash streaming servers into DVR format for broadcast archive compliance
  • Repurposing FLV footage from older video surveillance portals that originally delivered clips via Adobe Flash Player into a format readable by standalone DVR hardware
  • Migrating a library of FLV recordings from a decommissioned Flash-based video management system into a DVR-compatible archive
  • Preparing FLV screen recordings of broadcast content for ingestion into a DVR content management or review pipeline
  • Converting FLV footage captured by older IP camera systems — which often used Flash delivery — into DVR format for long-term storage and retrieval

Frequently Asked Questions

Because both the input FLV and output DVR use H.264 for video and AAC for audio, the codec family stays the same — but this is still a full transcode, not a remux. Each encode generation introduces some compression loss. At the default CRF 23 setting, the quality degradation is modest and generally not visible to the naked eye for standard-definition or 720p footage typical of Flash-era video. If you need maximum fidelity, lower the CRF value (e.g., CRF 18) in the FFmpeg command.
While FLV and DVR both support H.264 video, DVR is a proprietary container format with specific stream packaging requirements that differ from the FLV container structure. Simply copying the raw H.264 stream without re-wrapping it properly would likely produce a file that DVR playback systems cannot parse correctly. A full transcode ensures the stream headers, timestamps, and container metadata are written in a format the DVR system expects.
FLV files can carry limited metadata such as duration, creation date, and stream parameters in their header. However, DVR is a proprietary format with its own metadata schema specific to recording systems, and FFmpeg does not map FLV metadata fields to DVR-specific fields automatically. Standard stream metadata like duration will be recalculated and written, but recording-specific fields such as camera ID or DVR channel data will not be populated from the FLV source.
The video quality is controlled by the -crf flag. CRF (Constant Rate Factor) ranges from 0 (lossless) to 51 (lowest quality), with 23 as the default. To improve output quality for surveillance or archival use, lower the value — for example, replace '-crf 23' with '-crf 18' in the command. Be aware that lower CRF values produce larger DVR files, which may be a consideration for long recordings or limited storage systems.
The displayed command processes a single file, but you can adapt it for batch processing on your desktop. On Linux or macOS, use a shell loop: 'for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.flv}.dvr"; done'. On Windows Command Prompt, use: 'for %f in (*.flv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "%~nf.dvr"'. This is particularly useful for migrating large libraries of archived Flash video to DVR format.
Yes. FFmpeg can decode both Sorenson Spark (FLV1) and H.264 streams found inside FLV containers. Regardless of the source video codec, the output will be re-encoded to H.264 (libx264) as specified in the command. This means FLV files from very early Flash video players that predate H.264 adoption are fully supported and will be properly transcoded into a DVR-compatible H.264 stream.

Technical Notes

FLV is a container format designed specifically for HTTP and RTMP streaming delivery via Adobe Flash Player, and it carries strict limitations: no subtitle tracks, no chapter markers, no multiple audio tracks, and no transparency support — all of which are also absent from the DVR output format, so no features are lost in this specific conversion. The DVR format similarly offers no support for these features, making this a clean pairing with no capability regression. One important limitation to note is that FLV files sometimes contain broken or imprecise keyframe index tables, especially when they were created by live streaming servers rather than file exporters — FFmpeg will attempt to rebuild the index during decode, but severely corrupted FLV files may produce DVR output with timestamp discontinuities or seek errors. The audio transcode from AAC-in-FLV to AAC-in-DVR at 128k bitrate is essentially a passthrough in quality terms for typical speech and ambient audio in surveillance footage, though it is technically a decode-and-re-encode cycle. For files larger than 1GB, downloading and running the displayed FFmpeg command locally on your desktop is recommended, as browser memory constraints may limit processing of very long or high-bitrate FLV recordings.

Related Tools