Click here to Skip to main content
15,886,799 members
Articles / Programming Languages / C#
Article

An analyzer for MPEG 2 Program Stream files

Rate me:
Please Sign up or sign in to vote.
4.84/5 (42 votes)
12 Apr 20043 min read 193.2K   4.9K   90   22
Simple program that interprets a MPEG 2 file.

Intro:

This program is about demultiplexing a MPEG 2 movie file to its elementary packets. The program is a standalone release that I developed after the TS_Constructor program and represents the next step in multiplexing elementary streams for the HDTV standard.

The concept:

You know, of course, that a movie file of any type must contain specific info (audio, video, data and other stuff). What this program does is to identify and list detailed info on a MPEG 2 standard file. Each movie file is encoded in specific packets. Each packet serves a purpose: you have video packets, audio packets, stream specific packets (as PACK Header, System Header or PSM-Program Stream Map packet). Video and Audio packets usually form the ES (Elementary Streams) of a movie file and are encoded in PES (Packetized Elementary Streams) packets. One or more PES are regarded as PACKS, delimited by PACK Headers, as shown in the figure below that explains how a MPEG 2 stream is composed:

Sample screenshot

The program:

PS_Analyzer counts every type of packet in an input MPEG 2 file. The counts are displayed on screen while detailed info (type, number, size, SCR, PTS, DTS) for each packet as well as an overall statistic, is listed to an output text file specified by the user. As a note, SCR stands for System Clock Reference and is found in every PACK Header, PTS stands for Presentation Time Stamp and indicates the decoder when a specific picture or sound is to be displayed, DTS stands for Decoding Time Stamp and indicates the decoder when a certain picture or sound is to be decoded, because the order of images in a MPEG 2 file isn't the order of viewing when displayed as a movie. All this values are given in milliseconds. This concept isn't something new at all, you'll find the same idea in BBTOOLS sources from the BBMPEG project. The difference might be that this isn't a console application and is specifically developed for MPEG 2 files (also known as Program Streams). The program isn't too fancy but surely is functional and easy to use. It features only two forms, a main form, and a BROWSER form to help retrieve MPEG 2 files that are in different locations as the program.

Main window (at start):

Sample screenshot

This is how the program looks when you start it.

Main window (after processing a file) :

Sample screenshot

This is how the main window looks after a successful process.

Browse window:

Sample screenshot

This is the browse window used to change the current directory.

Output text file:

That's what you'll see in the output text file after processing a MPEG 2 stream:

Sample screenshot

at the beginning of file.

Sample screenshot

at the end of file.

Author notes:

This program might prove very useful. Apart from extracting info on a MPEG 2 files, with slight modifications it can be used to read any type of movie or to demultiplex a movie into Elementary Streams (Audio & Video components). The down side might be that comments are mostly in Romanian, but giving the MPEG 2 organization picture provided and the ease of C# classes, I hope it is not too hard to decipher the source code.

For impressions regarding this program or discussions related to this subject, feel free to contact me by e-mail (ro_angel_bv@hotmail.com or ro_angel_bv@fastmail.fm).

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Malaysia Malaysia
Dumitru Bogdan - alias Angel

Born 1980 , Brasov , Romania

Final year student at Transilvania University of Brasov , Faculty of Electrical Engineering & Computer Science , Department of Electronics & Computers

Programming : Visual C++ , Visual Fox Pro , Assembler & later , C#

Motto : "Nothing Last Forever" , and software is no exception

Comments and Discussions

 
QuestionWonderful job. Do you have C++ version of that source? Pin
Alexey.Andriyashev@usethelink.com28-Mar-07 5:49
Alexey.Andriyashev@usethelink.com28-Mar-07 5:49 
AnswerRe: Wonderful job. Do you have C++ version of that source? Pin
Balusamy16-Oct-07 19:45
Balusamy16-Oct-07 19:45 
AnswerRe: Wonderful job. Do you have C++ version of that source? Pin
Balusamy16-Oct-07 19:45
Balusamy16-Oct-07 19:45 
AnswerRe: Wonderful job. Do you have C++ version of that source? Pin
hyunoh17-Aug-08 15:59
hyunoh17-Aug-08 15:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.