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
| Feature | Value |
|---|---|
| Full name | Microsoft Recorded TV Show (Windows Media Center DVR-MS) |
| File extension | .dvr-ms (often labelled .dvr; successor .wtv) |
| MIME type | video/x-ms-dvr |
| Format type | Recorded-TV video container (ASF-based) |
| Developer | Microsoft |
| Introduced | 2002 (Windows XP Media Center Edition) |
| Container / base format | Advanced Systems Format (ASF) |
| Video codec | MPEG-2 |
| Audio codec | MP2 (SD) or AC-3 / Dolby Digital (HD) |
| Byte order | Little-endian (ASF GUIDs stored little-endian) |
| Magic number | 30 26 B2 75 (ASF Header Object GUID) at offset 0 |
| Closed captions | Line-21 caption data carried in a script/attribute stream |
| DRM | Optional broadcast-flag protection tied to the recording PC |
| Open standard | No (proprietary; audio-stream GUID undocumented) |
| Opens with | Windows Media Center, Windows Media Player, VLC |
| Platforms | Windows XP MCE, Vista, Windows 7 |
| Successor | .wtv (Windows 7 Media Center) |
| Related extensions | .wtv, .asf, .wmv, .mpg |
| Specification (base) | Microsoft ASF Specification |
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
- Wikipedia — DVR-MS (Microsoft Digital Video Recording)
- Wikipedia — Advanced Systems Format (ASF)
- MultimediaWiki — DVR-MS format notes
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.