Skip to content
File Formats & Migration

The practical default for a video preservation master is the FFV1 lossless codec inside a Matroska (MKV) container, with lossless PCM or FLAC audio. This combination is fully open, bit-for-bit lossless, and carries built-in integrity checks, which is why national archives and the broader community have standardised on it. Reserve H.264/MP4 strictly for access copies generated from the master; a lossy format can never be a preservation master.

Why is FFV1 in Matroska the preservation default?

FFV1 (FF Video 1) is a lossless intra-frame codec maintained as an open standard; version 3 stores a CRC checksum for every frame, so corruption is detectable down to the frame. Matroska (MKV) is an open container that holds multiple video, audio and subtitle tracks plus rich metadata, and copes with multi-terabyte files. Together they give you openness, losslessness and self-checking integrity — the three things a master needs. Uncompressed video offers no advantage over FFV1 except larger files.

PropertyFFV1 + MKV (master)H.264 + MP4 (access)
LosslessYesNo
Open / unencumberedYesPatent-encumbered
Per-frame integrity (CRC)Yes (FFV1 v3)No
Multi-track + metadataStrongLimited
UsePreservation masterStreaming/access

How do I create an FFV1/MKV master with ffmpeg?

Transcode losslessly and enable FFV1's slice CRCs so the file self-checks:

bash
ffmpeg -i source.mov \
  -c:v ffv1 -level 3 -coder 1 -context 1 \
  -g 1 -slicecrc 1 -slices 24 \
  -c:a copy \
  master.mkv

-level 3 selects FFV1 v3, -slicecrc 1 writes per-slice checksums, and -g 1 keeps every frame independently decodable (intra-frame), which matters for long-term robustness. Copy the audio track losslessly with -c:a copy, or re-encode to FLAC if the source audio is itself lossless.

How do I prove the transcode was lossless?

Generate a frame-level MD5 of source and output and compare them. If they match, every pixel survived:

bash
ffmpeg -i source.mov  -f framemd5 source.framemd5
ffmpeg -i master.mkv  -f framemd5 master.framemd5
diff source.framemd5 master.framemd5   # no output = identical frames

This framemd5 check is the video equivalent of a pixel-perfect image comparison and is your evidence of losslessness.

How do I validate the file against a policy?

Use MediaConch to check both well-formedness and conformance to a preservation policy you define (codec must be FFV1, container MKV, CRC present, and so on):

bash
mediaconch --policy=preservation_policy.xml master.mkv

A passing MediaConch report, stored with the file, documents that the master meets your stated requirements. Combine it with mediainfo master.mkv to capture full technical metadata for your records.

What is the end-to-end workflow?

Run these steps in order for each item:

  1. Capture or receive the source (lossless capture from tape; original file if born-digital).
  2. Identify and inspect with MediaInfo to record codec, resolution, frame rate and audio.
  3. Transcode to FFV1/MKV with slice CRCs (born-digital: also keep the original).
  4. Verify losslessness via framemd5 comparison.
  5. Validate against your MediaConch policy and record fixity (SHA-256).
  6. Derive an H.264/MP4 access copy from the master for streaming.

Key Takeaways

  • The open preservation default is FFV1 (lossless) in Matroska (MKV) with PCM/FLAC audio.
  • H.264/MP4 is lossy and patent-encumbered — use it only for access derivatives.
  • Enable FFV1 v3 slice CRCs (-slicecrc 1) so the master self-checks for corruption.
  • Prove losslessness with a framemd5 comparison between source and output.
  • Validate with MediaConch against a written policy and capture metadata with MediaInfo.
  • Keep born-digital originals; for digitised tape, the FFV1/MKV file is the master.

Frequently Asked Questions

The widely adopted open preservation master is FFV1 (a lossless video codec) wrapped in the Matroska (MKV) container, with audio in lossless PCM or FLAC. FFV1 version 3 adds internal CRC checksums per frame, which is why archives favour it.

Why FFV1 and Matroska rather than a normal MP4?

MP4/H.264 is lossy and proprietary-encumbered, so it is unsuitable as a master. FFV1 is lossless and open, and Matroska is an open, flexible container that handles multiple tracks, rich metadata and large files better than legacy containers.

Is uncompressed video ever necessary?

Rarely. FFV1 is mathematically lossless, so it reconstructs every pixel of the source while taking roughly a third to half the space of uncompressed. Keep uncompressed only when a specific mandate or downstream tool requires it.

How do I check an FFV1/MKV file is valid and lossless?

Use MediaConch to validate the file against a preservation policy, and verify FFV1's frame CRCs with ffmpeg. A framemd5 comparison between source and FFV1 confirms the conversion is bit-for-bit lossless.

Should I preserve the original digital file or just the FFV1 copy?

For born-digital video, keep the original file as well, because re-encoding even losslessly changes the container and metadata. For digitised analogue tape, the FFV1/MKV file you create is the preservation master.

What audio should accompany preserved video?

Use lossless audio inside the Matroska container, typically PCM or FLAC, at a capture rate appropriate to the source. Lossy audio codecs like AAC belong only in access derivatives, not the preservation master.