Initializing... drag & drop files here
Supports: WTV
.wtv captures from a Media Center library at once. Files are uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours.WTV is Microsoft's Windows Recorded TV Show container, introduced in Windows Media Center's TV Pack 2008 and shipped with the Media Center editions of Windows 7. It wraps MPEG-2 or H.264 video with MPEG-1 Layer II or AC-3 audio, plus broadcast metadata (EPG, captions, DRM flags). Microsoft removed Media Center entirely starting with the Windows 10 release on 29 July 2015, so the format has been frozen since 2009 — but archives of recorded broadcasts remain on countless drives and NAS units. PPM (Portable Pixmap, magic number P6 for raw binary or P3 for ASCII) is the opposite extreme: an uncompressed, header-and-RGB-bytes format from Jef Poskanzer's Netpbm toolkit (PBM 1988, full Netpbm 1993) that every research-grade image library reads natively. Typical reasons to extract WTV frames as PPM:
imread. Perfect for OCR on station bugs, license-plate extraction from news B-roll, or face detection on recorded interviews.pnmscale, pnmtopng, ppmtotiff, pamcomp) that chain via pipes. Dumping WTV to PPM gives you a substrate that survives unlimited transformations without re-encoding artefacts..ppm natively) before saving as TIFF for offset.A 1920×1080 frame at 8-bit RGB lands around 6.2 MB as PPM and roughly 12.4 MB at 16-bit — orders of magnitude bigger than the same frame as PNG (a 192×128 PPM is ~73 KB versus ~166 bytes as PNG), but that's the point: no decoder, no surprises. If you need a smaller compressed still, jump straight to WTV to PNG or WTV to JPG. For the reverse direction (rebuilding a PPM sequence into a video), see PPM to MP4.
| Property | PPM (this page) | PNG | JPG | TIFF |
|---|---|---|---|---|
| Compression | None (raw RGB bytes) | Lossless DEFLATE | Lossy DCT | Optional LZW / ZIP / JPEG |
| Bit depth | 8-bit or 16-bit per channel | 1/8/16-bit, with alpha | 8-bit (12-bit rare) | 1/8/16/32-bit, float |
| Typical 1080p frame size | ~6.2 MB (8-bit) / ~12.4 MB (16-bit) | 1–3 MB | 100–500 KB | 2–6 MB compressed, 6 MB+ raw |
| Magic header | P6 (raw) / P3 (ASCII) |
89 50 4E 47 |
FF D8 FF |
49 49 2A 00 / 4D 4D 00 2A |
| Native reader support | Netpbm, OpenCV, ImageJ, GIMP, Photoshop | Universal browsers + libs | Universal | Pro imaging tools, slow in browsers |
| Best for | CV/research pipelines, lossless intermediate | Web archive, screenshots | Web sharing, social, email | Pre-press, scanning, multi-page |
| Metadata | None (header only) | tEXt/zTXt chunks, ICC profile | EXIF, IPTC, ICC, XMP | Rich (tags, geo, multi-resolution) |
| Need | Mode | Example settings | Result |
|---|---|---|---|
| Single thumbnail from a recording | Specific Frame | Time = 30 seconds | One PPM at the 30-second mark |
| Title-card grab from intro | Specific Frame | Time = 2 seconds | One PPM right after the splash |
| Slideshow of key moments | Multiple Screenshots | 1 fps | One PPM per second of source |
| Dense sequence for CV training | Multiple Screenshots | 24 or 30 fps | Every frame extracted (matches source frame rate) |
| Lightweight motion preview | Multiple Screenshots | 2 fps | One PPM every half-second |
| Caption/OCR scan | Multiple Screenshots | 5 fps | Five PPMs per second — enough to catch ticker text |
WTV stores compressed MPEG-2 or H.264 video — a 30-minute HD recording is typically 1.5–3 GB. A single PPM frame is uncompressed RGB plus a short header, so one 1920×1080 frame at 8-bit is about 6.2 MB on disk (1920 × 1080 × 3 bytes), and 16-bit doubles that to ~12.4 MB. Extracting 30 fps of one minute of HD video as PPM produces ~11 GB. That bloat is intentional — PPM trades disk for read simplicity. If you need a sequence, use a lower framerate or write a pipeline that processes each PPM and deletes it immediately.
8-bit (P6 with maxval 255) is the default and matches what every WTV stream actually contains after MPEG decode — 24-bit RGB is the universal standard and is what GIMP, Photoshop, OpenCV, and the Netpbm tools assume. Pick 16-bit (maxval 65535) only when downstream code expects high-precision input (scientific imaging, tone-mapping research, or chaining through filters that introduce quantization). Pick 1-bit for binary masks — useful as alpha mattes or for thresholding experiments, but it discards all colour and most luminance information.
Both encode the same image. P6 (raw) writes each colour sample as a single byte (or two bytes if maxval ≥ 256) directly to disk — compact and fast to parse. P3 (plain) writes each sample as an ASCII decimal number separated by whitespace, making the file human-readable but 3–4× larger and slower to load. Almost every tool produces P6 by default; P3 only matters when you need to inspect or hand-edit values, or when transferring across a system that mangles binary data.
Yes. Use Specific Frame with Time (seconds) and enter the timestamp from the source — for example, 12 minutes into a 30-minute recording is 720 seconds. WTV's container preserves the broadcast PTS (presentation timestamp), so the extracted frame matches what Windows Media Center showed at that moment. If your recording has 5 seconds of pre-roll black before the show starts, add that offset to your target timecode.
No. WTV files flagged "Copy Once" or "Copy Never" via the CGMS-A (Copy Generation Management System – Analog) broadcast flag are encrypted with Windows Media DRM and bound to the recording PC's hardware. No third-party converter — browser-based or desktop — can extract frames from those files without removing the DRM at the OS level, which is outside this tool's scope and is regulated by DMCA Section 1201 in the US. Off-air recordings of unprotected broadcasts (most over-the-air ATSC content in the US, BBC FreeView in the UK) extract normally.
PPM is RGB-only by design — its three samples per pixel are red, green, and blue with no alpha channel. If you need transparency, the Netpbm family answer is PAM (Portable Arbitrary Map, magic P7), which supports RGBA. For Photoshop/web workflows, convert the PPM to PNG afterwards and add a mask there. For pure binary masks, the matching Netpbm format is PBM (1-bit).
A few possibilities: (1) the file is DRM-flagged (see the CGMS-A FAQ above); (2) it was recorded on a Windows 7 box with a TV tuner driver that wrote a non-standard variant — try re-muxing through ffmpeg -i source.wtv -c copy fixed.wtv to normalize the container; (3) it's actually a .dvr-ms file (WTV's predecessor, used in Windows XP Media Center and Vista pre-TV-Pack-2008) that's been renamed — DVR-MS uses ASF as the underlying container and needs a different decode path. The fastest workaround is converting the WTV to a clean intermediate like WTV to MP4 first, then extracting frames from that.
GIMP, Photoshop, IrfanView, XnView, ImageMagick (magick), the Netpbm CLI tools (pnmtopng, ppmtojpeg), OpenCV (cv2.imread), Pillow (PIL.Image.open), scikit-image (skimage.io.imread), MATLAB (imread), ImageJ, and most scientific Python notebooks all read PPM natively without any plugin. Web browsers do not display PPM directly — you'll need to convert it to PNG or JPG first if you want to embed it on a webpage.
The MPEG-2 inside a WTV is stored as YUV 4:2:0 — chroma is subsampled to a quarter of the luma resolution. When the decoder reconstructs RGB for PPM output, the chroma is upsampled to full resolution, so colour edges may look slightly softer than they would with chroma 4:4:4 source material. That's a property of the original broadcast, not the conversion. Picking 16-bit PPM doesn't recover the missing chroma — it only gives downstream filters more headroom before quantization.