65.9K
CodeProject 正在变化。 阅读更多。
Home

MPEG 2 程序流文件的分析器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.84/5 (37投票s)

2004年4月13日

3分钟阅读

viewsIcon

196070

downloadIcon

4904

一个用于解释 MPEG 2 文件的简单程序。

引言

此程序是关于将 MPEG 2 电影文件解复用到其基本数据包的。该程序是一个独立的版本,是我在 TS_Constructor 程序之后开发的,代表了为 HDTV 标准复用基本流的下一步。

概念

您当然知道,任何类型的电影文件都必须包含特定的信息(音频、视频、数据和其他内容)。此程序的作用是识别并列出关于 MPEG 2 标准文件的详细信息。每个电影文件都以特定的数据包编码。每个数据包都有一个用途:您有视频数据包、音频数据包、流特定数据包(如 PACK 标头、系统标头或 PSM-程序流映射数据包)。视频和音频数据包通常构成电影文件的 ES(基本流),并以 PES(打包基本流)数据包编码。一个或多个 PES 被视为 PACK,由 PACK 标头分隔,如下图所示,它解释了 MPEG 2 流是如何组成的

Sample screenshot

程序

PS_Analyzer 统计输入 MPEG 2 文件中每种类型的数据包。计数会显示在屏幕上,而每个数据包的详细信息(类型、数量、大小、SCR、PTS、DTS)以及整体统计信息会列出到用户指定的一个输出文本文件中。请注意,SCR 代表系统时钟参考,存在于每个 PACK 标头中,PTS 代表演示时间戳,指示解码器何时显示特定的图片或声音,DTS 代表解码时间戳,指示解码器何时解码某个图片或声音,因为 MPEG 2 文件中图像的顺序与作为电影显示时的观看顺序不同。所有这些值都以毫秒为单位给出。这个概念根本不是什么新鲜事,您会在 BBMPEG 项目的 BBTOOLS 源代码中找到相同的想法。区别可能在于,这并非控制台应用程序,而是专门为 MPEG 2 文件(也称为程序流)开发的。该程序虽然不够花哨,但肯定实用且易于使用。它仅包含两个窗体,一个主窗体和一个 BROWSER 窗体,用于帮助检索程序中不同位置的 MPEG 2 文件。

主窗口(启动时)

Sample screenshot

这是程序启动时的样子。

主窗口(处理文件后)

Sample screenshot

这是主窗口在成功处理文件后的样子。

浏览窗口

Sample screenshot

这是用于更改当前目录的浏览窗口。

输出文本文件

这是在处理 MPEG 2 流后,您将在输出文本文件中看到的内容

Sample screenshot

在文件开头。

Sample screenshot

在文件末尾。

作者说明

此程序可能非常有用。除了提取 MPEG 2 文件的信息外,稍作修改后,它还可以用于读取任何类型的电影或将电影解复用到基本流(音频和视频组件)。缺点可能在于,注释大多用罗马尼亚语,但鉴于提供的 MPEG 2 组织图和 C# 类的易用性,我希望破译源代码不会太难。

对于有关此程序的印象或与此主题相关的讨论,请随时通过电子邮件与我联系 (ro_angel_bv@hotmail.comro_angel_bv@fastmail.fm)。

© . All rights reserved.