DVR File Documentation


Summary

A DVR file is a Microsoft Recorded TV Show, television captured by Windows Media Center and the Windows XP/Vista era TV tuner tools. The recording is a .dvr-ms file: an Advanced Systems Format (ASF) container holding an MPEG-2 video stream and MP2 or AC-3 audio, with a video/x-ms-dvr MIME type. Windows Media Center and Windows Media Player play it; on Windows 7 and later the same content moved to the newer WTV format.

Technical details

FeatureValue
Full nameMicrosoft Recorded TV Show (Windows Media Center DVR-MS)
File extension.dvr-ms (often labelled .dvr; successor .wtv)
MIME typevideo/x-ms-dvr
Format typeRecorded-TV video container (ASF-based)
DeveloperMicrosoft
Introduced2002 (Windows XP Media Center Edition)
Container / base formatAdvanced Systems Format (ASF)
Video codecMPEG-2
Audio codecMP2 (SD) or AC-3 / Dolby Digital (HD)
Byte orderLittle-endian (ASF GUIDs stored little-endian)
Magic number30 26 B2 75 (ASF Header Object GUID) at offset 0
Closed captionsLine-21 caption data carried in a script/attribute stream
DRMOptional broadcast-flag protection tied to the recording PC
Open standardNo (proprietary; audio-stream GUID undocumented)
Opens withWindows Media Center, Windows Media Player, VLC
PlatformsWindows XP MCE, Vista, Windows 7
Successor.wtv (Windows 7 Media Center)
Related extensions.wtv, .asf, .wmv, .mpg
Specification (base)Microsoft ASF Specification
File signature (magic bytes)
30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C

Offset 0. This is the 16-byte ASF Header Object GUID (75B22630-668E-11CF-A6D9-00AA0062CE6C), stored with its first three fields little-endian, so the file begins 30 26 B2 75. A DVR-MS recording is a valid ASF stream, the same container as WMV and .asf. Every ASF object starts with a 128-bit GUID and a 64-bit size, and the Header Object is always first.

What is a DVR file?

A DVR file is a Microsoft Recorded TV Show: a television programme captured by Windows Media Center, the PVR software Microsoft shipped with Windows XP Media Center Edition in 2002 and later with Windows Vista. The recording’s real extension is .dvr-ms (Digital Video Recording, Microsoft), often shortened to .dvr in listings. When you scheduled a recording from a TV tuner card, Media Center wrote the incoming broadcast to one of these files, complete with the video, the audio and the programme metadata.

The format is a container, not a codec. It wraps standard-definition MPEG-2 video with MP2 audio, or, for HD broadcasts, AC-3 (Dolby Digital) audio, inside Microsoft’s Advanced Systems Format. That container base is what this article is really about: a .dvr-ms file is an ASF stream with a few television-specific extensions layered on top. On Windows 7, Media Center switched to a newer container, WTV, and could convert old .dvr-ms recordings into it, but the two are close cousins.

The ASF object model: GUID, size, payload

ASF, the Advanced Systems Format, is built entirely from objects. Every object has the same three-part shape, and a parser walks the file by reading one object header, jumping its length, and reading the next.

ASF object
  object_id    16 bytes   128-bit GUID naming the object type
  object_size   8 bytes   total length incl. this 24-byte header, little-endian
  object_data   variable   payload (may itself contain nested objects)

The 16-byte GUID identifies what the object is; the 64-bit object_size gives its total length including the 24-byte header, so the sum of all object sizes equals the file length. GUIDs in ASF are stored in Microsoft’s mixed byte order: the first three fields little-endian, the last two big-endian. That is why the file’s opening GUID, the ASF Header Object 75B22630-668E-11CF-A6D9-00AA0062CE6C, appears on disk as the bytes 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C.

The Header Object and the Data Object

A DVR-MS file, like any ASF file, has two top-level objects that carry the bulk of the content: the Header Object and the Data Object.

Header Object            (GUID 75B22630-...)  metadata + stream definitions
  ├─ File Properties     file size, creation time, play duration, packet size
  ├─ Stream Properties   one per stream: media type, codec, stream number
  ├─ Header Extension    extra stream headers (DVR-MS hides its audio here)
  ├─ Codec List          human-readable codec names
  └─ (Extended) Content  attributes: channel, programme title, description
Data Object              (GUID 75B22636-...)  the interleaved media packets
  └─ Data Packets        fixed-size packets carrying video/audio payloads
Index Object(s)          time-to-offset index for seeking

The Header Object holds every Stream Properties object, one per media stream, each declaring the stream number, the media type (video or audio) and the codec. It also holds a File Properties object with the packet size, the total play duration in 100-nanosecond units and the creation date, plus content-description objects that store the programme’s title, channel and synopsis as Media Center recorded them.

The Data Object that follows is a run of fixed-size data packets. ASF chops each stream into payloads and interleaves them into equal-length packets (the size is declared up front in File Properties), so a player can read sequentially and demultiplex video and audio without seeking. An Index Object near the end maps presentation times to packet offsets so the player can jump to a timecode.

Where DVR-MS diverges from plain ASF

DVR-MS is a valid ASF file, but Microsoft added recorded-TV behaviour that standard ASF readers do not expect, which is exactly why open-source players struggled with it for years.

First, the audio stream header is not stored in the usual Stream Properties object inside the main header. It is tucked into the Header Extension Object, and the GUID that names the audio stream type was never published by Microsoft; open-source projects had to reverse-engineer it before they could decode DVR-MS audio. Second, every frame in the video stream is flagged as a key frame at the ASF layer, so an ASF-level seeker cannot tell key frames from inter-frames and must fall back on parsing the MPEG-2 bitstream itself to find real random-access points. Third, the boundary between media objects does not reliably mark a completed video frame, so a demuxer cannot assume one object equals one frame.

On top of the media, DVR-MS carries television metadata that plain ASF has no concept of: line-21 closed-caption data delivered through a script/attribute stream, and, when a broadcast set the copy-protection flag, DRM that binds playback to the recording PC. A protected recording will not open on a different machine.

DVR-MS, WTV and the move off ASF

Windows 7 replaced DVR-MS with WTV (Windows Recorded TV Show). WTV is not ASF; it uses a different, block-based container designed to handle multiple audio tracks, richer metadata and higher-bitrate HD more cleanly than the ageing ASF structure. Media Center on Windows 7 could still play old .dvr-ms files and offered a right-click “Convert to WTV” that rewrapped the MPEG-2 streams into the new container without re-encoding.

Because the video inside is ordinary MPEG-2, a .dvr-ms file remuxes cleanly to a standard MPG program stream, and modern players such as VLC decode it directly now that the audio-stream GUID is known. The container is the only unusual part; the payload is a broadcast MPEG-2 transport that any MPEG-2 decoder understands once it is unwrapped.

FAQ

Why does the file start with 30 26 B2 75 instead of 75 22 B2 30?

Because ASF stores the first three fields of every GUID in little-endian order. The ASF Header Object GUID is 75B22630-668E-11CF-...; its opening 32-bit field 0x75B22630 is written low byte first as 30 26 B2 75. The final two GUID fields are stored big-endian, which is the mixed convention Microsoft uses throughout ASF.

Why won’t some DVR-MS files play, and how is the successor different?

Two reasons: the audio stream uses an unpublished GUID that older non-Microsoft players could not identify, and copy-protected recordings carry DRM tied to the original PC. Unprotected files play in Windows Media Player, Media Center and current VLC builds. Windows 7 recordings use WTV instead, a non-ASF container, so a Windows 7 machine may present the newer format for the same kind of content.

References