✳ OMNIVIEWER

See inside your MPEG stream.

safe · secure · no server · works offline · fast

…or paste a file you copied in Finder, or just start typing at the cursor.

Or try it now

↓ scroll for about & FAQ

Preview

Drop a CSV file, or use the file picker.

Read an MPEG program stream’s structure — without uploading it

Everything MPEG‑1 and MPEG‑2 write is framed by a start code: the bytes 00 00 01 followed by one byte saying what comes next. BA is a pack header, BB a system header, B3 a sequence header, B8 a group of pictures, 00 a picture, and C0EF the audio and video PES packets. The encoder is forbidden from ever emitting that sequence by accident, which is what makes an MPEG stream readable from any offset without decoding a single pixel.

The PACKS tab walks exactly those codes and lays out what it finds: every pack with its system clock reference and mux rate, every PES packet with its stream id, payload size and presentation timestamp, every GOP with its timecode and whether it is closed, and the twelve-byte sequence header decoded field by field — picture size, frame-rate code, sample aspect ratio, declared bitrate and VBV buffer.

It is also where you find out a file is broken. A well-formed program stream accounts for every byte, because each unit’s length says where the next one begins; a truncated download or a damaged capture forces a resync, and the tab counts them rather than quietly renumbering.

It’s one lens on OmniViewer’s MPG Viewer & Converter — MP4, MOV, GIF: drop a file and every tab is one click away. OmniViewer opens every file format, entirely in your browser — no upload, no server.

FAQ

Is my video uploaded anywhere?

No. OmniViewer is a static page with no server-side processing. Your .mpg is read directly by your browser, and the decoding and converting run inside the tab in WebAssembly. Nothing is transmitted, nothing is stored and there is no account.

Why will not my browser play an MPG file?

Because no browser ships an MPEG-1 or MPEG-2 video decoder for the <video> element. They decode H.264, VP8, VP9 and AV1 instead. The format is thirty years old and its patents expired, but the decoder was never added, so an .mpg in a browser is a black rectangle. OmniViewer works around it by decoding a few seconds of the stream into H.264 locally and playing that.

What is an MPEG program stream, really?

A flat run of packs. Each pack starts with the four bytes 00 00 01 BA, carries a clock value called the system clock reference, and is followed by PES packets holding the coded video and audio. There is no index anywhere in the file — no moov box, no seek table, no directory. The container is the sequence of packs and nothing else.

Can I convert MPG to MP4 here?

Yes, and to MOV, WebM, animated GIF, MP3, WAV or a single PNG frame. Open the CONVERT tab, set the start and length, choose a width and a quality, and press the button on the format you want. The encode runs in your browser on a real FFmpeg build compiled to WebAssembly, so there is no upload, no queue and no watermark.

How large an MPG can I open?

There is no cap on opening one. The parse reads a bounded two-megabyte prefix whatever the file size, and the raw and hex views read only the bytes on screen. Converting is bounded differently: the encoder is handed a pack-aligned window around the clip you asked for, typically a few megabytes, so converting a clip out of a twenty-gigabyte capture costs about what converting one out of a small file costs.

How can it seek in a file with no index?

Through the pack clock. Every pack header carries a system clock reference, so a byte offset for a given moment can be interpolated, probed with one small read, corrected from the clock value actually found there, and re-aimed — four probes at most. The cut is then moved back to the pack that carries the next sequence header, so the window decodes cleanly from its first frame.

Does converting reduce quality?

Somewhat, and the tab says so on every card. MPEG-1 and MPEG-2 are already lossy, so re-encoding to H.264 or VP8 is a second lossy pass. At the High quality setting the difference is not visible at normal viewing distance. WAV is the exception — it is uncompressed, so extracting audio to WAV adds no further loss at all.

What is the difference between .mpg, .m2v and .vob?

A .mpg or .mpeg is a program stream: video and audio multiplexed together in packs. A .m1v or .m2v is a bare video elementary stream — coded frames with no packs, no PES packets and no audio at all. A .vob is a DVD Video Object, which is a program stream that also carries AC-3, DTS or LPCM audio and subtitle subpictures in its private streams. All of them open here.

Why does the frame histogram matter?

It shows the compression strategy. I-frames are complete pictures and stand alone, P-frames reference what came before, and B-frames reference both directions. A stream that is mostly B-frames is compressing hard; one that is mostly I-frames is either very short on GOP length or was made for editing. It also explains seeking: a decoder can only start at an I-frame, which is why scrubbing lands where it does.

Does it read MPEG transport streams (.ts, .m2ts)?

Not yet. A transport stream carries the same video and audio but frames it in fixed 188-byte packets addressed by PID, with tables mapping the programs — a different walk rather than a bigger one. It is listed as planned on the feature map.