VIDEO_TS.IFO文件

未来之窗软件服务 2009-01-21 11:08:14
video_ts.vob是DVD的视频管理器(VMG)部分,video_ts.ifo是相应的ifo文件。
都是DVD上面的东西.VOB、IFO、BUP文件这里会详细讲解。

打开一张DVD光盘的时候你会看到至少两个目录:

22.08.2000 03:20 <DIR> AUDIO_TS
22.08.2000 05:53 <DIR> VIDEO_TS

AUDIO_TS 是用作DVDAudio的(目前我还没见过这种盘)而VIDEO_TS是用来存储电影数据的。可能还有其他一些给个人电脑使用的包含了dvd-rom特性的目录。

让我们看看VIDEO_TS目录:

22.08.2000 05:53 <DIR> .
22.08.2000 03:20 <DIR> ..
22.08.2000 05:23 12'288 VIDEO_TS.BUP
22.08.2000 05:23 12'288 VIDEO_TS.IFO
22.08.2000 05:23 333'824 VIDEO_TS.VOB
22.08.2000 05:23 59'392 VTS_01_0.BUP
22.08.2000 05:23 59'392 VTS_01_0.IFO
22.08.2000 05:23 8'192 VTS_01_0.VOB
22.08.2000 05:27 1'073'643'520 VTS_01_1.VOB
22.08.2000 05:31 1'073'631'232 VTS_01_2.VOB
22.08.2000 05:32 104'785'920 VTS_01_3.VOB
22.08.2000 05:32 88'064 VTS_02_0.BUP
22.08.2000 05:32 88'064 VTS_02_0.IFO
22.08.2000 05:32 59'379'712 VTS_02_0.VOB
22.08.2000 05:36 1'073'436'672 VTS_02_1.VOB
22.08.2000 05:40 1'073'549'312 VTS_02_2.VOB
22.08.2000 05:45 1'073'502'208 VTS_02_3.VOB
22.08.2000 05:49 1'073'371'136 VTS_02_4.VOB
22.08.2000 05:53 1'073'555'456 VTS_02_5.VOB
22.08.2000 05:57 810'952'704 VTS_02_6.VOB

你可以看到DVD上有三种文件: .VOB、 .IFO、 .BUP

VOBs - Video OBjects

VOB文件包括数个混在一起的流:视频、音频和字幕。视频流是MPEG-2格式的,音频流可以是AC3、Linear PCM、Mpeg2多声道或者Mpeg1 layer2 双声道音频。AC3基本上是标准了,而MPEG-2多声道只能在很少的盘上看到。(one example is "Inthe line of fire, PAL edition") 虽然这种格式最初是作为2区(欧洲和日本)的标准格式设计的,但是最终还是放弃了这样的设计。PCM通常出现在音乐DVD和廉价制作的MP2上。PCM是高质量未压缩的音频格式,占据很大的空间。对于一个全长的,需要多语种的电影来说,它很不合适。AC3的比特率在192和448kbit/s之间。192kbit/s是给双声道用的,384-448kbit/s是给5.1环绕立体声用的。

VOB文件可以包含一个主要的视频流和数个多角度视频流,使你可以在观看的时候切换不同视角。这个功能通常是在回放时用来显示情节串联图板(storyboards)或者一些其他的附加功能。视频流的最大比特率是9.8mbit。视频流和音频流加在一起任何时刻都要小于10mbit/s。最多可以加入9个不同的音轨,使你可以在回放的时候切换(这个功能可以在制作DVD的时候屏蔽掉)。最多可以有32个字幕流。字幕是4色的位图,覆盖到视频流上,而不是直接编码到视频流内。

让我们用vStrip来仔细看看VOB文件:

Scanning for stream id's, press control-c to quit...
Found 0xBF = Private 2 [@LBA 0]
Found VOB-ID: 01/CELL-ID: 01 [@LBA 0]
Encountered encrypted sector, attempting key recovery [@LBA 1]
Deduced key: 0xC00374C61C (2/2 vkey(s))
Found 0xE0 = Video 0 [PTS 0:00:00.290 @LBA 1]
Width = 720
Height = 480
Aspect-ratio = [3] 16:9 display
Frame-rate = [4] 29.97 (30000/1001) fps
Found 0xBD = Private 1, sub 0x80 [PTS 0:00:00.224 @LBA 99]
Found 0xBD = Private 1, sub 0x81 [PTS 0:00:00.224 @LBA 100]
Found 0xBD = Private 1, sub 0x82 [PTS 0:00:00.224 @LBA 101]
Found 0xBD = Private 1, sub 0x83 [PTS 0:00:00.224 @LBA 102]
Found 0xBE = Padding [@LBA 117]
Found 0xBD = Private 1, sub 0x20 [PTS 0:00:00.724 @LBA 169]
Found 0xBD = Private 1, sub 0x21 [PTS 0:00:00.724 @LBA 170]
Found VOB-ID: 02/CELL-ID: 01 [@LBA 378]

如前所述通常只有一个视频流,它的ID永远是0xE0。PTS是Program Time Stamp程序时间标志,在VOB的开始部分描述一个流在什么时间开始。你可以看到分辨率是720x480,这是一张NTSC制式的DVD。帧率是29.97。DAR是16:9。有四个音频流:0x80 - 0x83。注意这都是AC3音频流。所有的AC3音频流都在 0xBD 数据流,子数据流0x8x中。DTS流往往ID是 0xBD 0x88 或 0xBD 0x89。PCM流在 0xBD 0xAx,从0xA0到0xA9。MP2在0xCx。这里有一个PCM和MP2流的例子:

Found 0xBD = Private 1, sub 0xA0 [PTS 0:11:01.479 @LBA 4]
Found 0xC0 = Audio 0 [PTS 0:00:00.440 @LBA 25]

这里还有两个子数据流,0x20 和 0x21。所有的字幕流也在0xBD。

另外还有一些填充流(0xBE)但我们不用去关心他们。

你可能注意到VOB ID和Cell(单元) ID。一个Cell是DVD上最小的单位。一张简单的DVD上可能只有一个章节但是大多数DVD都要复杂得多。如果你对Cell感兴趣我建议你学着使用Scenarist,这样你才能真正了解他们的工作方法。我不知道VOB ID是如何建立的,也不知道他们对应于什么结构,通常每一个单位都有他自己的VOB ID,比如说电影本身和电影预告。在多角度和多分支盘片中每个角度都有自己的VOB ID。

IFOs - InFOrmation

IFO文件为播放器提供十分重要的导航信息。比如一个章节从什么地方开始,一个特定的音频流或者字幕流在什么地方,等等。这就是为什么我们只能用可以读取这种文件的Ripper软件来提取部分电影(比如说一个章节)。

vStrip可以做到这一点。我们来看看使用ifo处理的时候的输出。(命令举例:vStrip f:\video_ts\vts_02_1.vob -if:\video_ts\vts_02_0.ifo)

Parsing "f:\video_ts\vts_02_0.ifo"...
0. Length: 02:07:15:24 in 15 cell(s).
1. Length: 00:00:01:01 in 1 cell(s).
Scanning for stream id's, press control-c to quit...

你可以看到这里有两个PGC(ProGram Chains,故事链)。PGC 0展示的是电影本身,而PGC 1是最开始的制片商Logo。这个结构可能非常复杂,不过很好理解。多角度电影有很多相同长度的PGC,而多分支电影有很多不同长度的PGC。为了选择正确的电影版本你需要选择正确的PGC。PGC是对应于你播放器里面显示的标题数字的。举个例子:Matrix - follow the white rabbit feature = 标题 6或者说PGC 5,因为pc内部是从0开始计数的。



最后一点,IFO文件是不加密的。

BUPs - BackUP

BUP文件是IFO的部分备份,也是不加密的。

仔细看看

我们现在已经了解了各种文件格式,让我们再看看实例:

22.08.2000 05:23 12'288 VIDEO_TS.BUP
22.08.2000 05:23 12'288 VIDEO_TS.IFO
22.08.2000 05:23 333'824 VIDEO_TS.VOB
22.08.2000 05:23 59'392 VTS_01_0.BUP
22.08.2000 05:23 59'392 VTS_01_0.IFO
22.08.2000 05:23 8'192 VTS_01_0.VOB
22.08.2000 05:27 1'073'643'520 VTS_01_1.VOB
22.08.2000 05:31 1'073'631'232 VTS_01_2.VOB
22.08.2000 05:32 104'785'920 VTS_01_3.VOB
22.08.2000 05:32 88'064 VTS_02_0.BUP
22.08.2000 05:32 88'064 VTS_02_0.IFO
22.08.2000 05:32 59'379'712 VTS_02_0.VOB
22.08.2000 05:36 1'073'436'672 VTS_02_1.VOB
22.08.2000 05:40 1'073'549'312 VTS_02_2.VOB
22.08.2000 05:45 1'073'502'208 VTS_02_3.VOB
22.08.2000 05:49 1'073'371'136 VTS_02_4.VOB
22.08.2000 05:53 1'073'555'456 VTS_02_5.VOB
22.08.2000 05:57 810'952'704 VTS_02_6.VOB

VIDEO_TS.*是最先播放的项目。这是在制作时被设定当一张盘被插进播放器时最先播放的东西。通常这些是版权声明,不过也会有一个选择菜单语言、电影预告之类的菜单。video_ts.vob包含视频和音频,video_ts.ifo包含导航信息,video_ts.bup是video_ts.ifo的备份。

这里还有两个ifo文件: vts_01_0.ifo 和 vts_02_0.ifo。文件名中前两个数字表示标题数,很显然最多只能有99个标题(不存在以vts_00_开头的这类文件) 。每个标题下最多可以有10个VOB文件,其中vts_xx_0.vob也就是第一个VOB文件包含那个标题的菜单。每个标题至少有两个VOB,一个是菜单另一个包括主要功能,还有一个IFO一个BUP。

我们的例子中标题1包含幕后花絮和菜单,标题2包含影片和菜单。

你可以看到,一个VOB文件最大是1GB。虽然这些文件必须小于或等于这个尺寸,但的确是有一些比这个尺寸大,这种VOB文件是不能在电脑上播放的。

最后一个问题:如何在盘上确定主要影片的位置?最大的IFO文件提供了title的数量,接着你需要提取除了菜单VOB以外的所有的VOB文件(当然除非你想要菜单)。大部分Ripper(如果他们不处理IFO文件)都是以这个方法选择所要复制的主要影片和IFO的。

深入VOB文件

DVD视频内容被分为titles(影片或唱片)和分块的titles(章节或歌曲).Titles由cells构成,这些cells 被一个或多个的节目链(PGCs)连接起来。cell是dvd上最小的视频单元。有时一个cell相当于一个章节,但是这样的情况不常出现。Cells时常由VOB IDs组织在一起。例如华纳兄弟(Warner Brothers)电影中每一个layer都有一个VOB ID,对于多视角影片(例如在每一个分支点每一个视角都有自己的VOB ID,当这些视角重新汇集,再命名下一个VOB ID),对于无缝分支影片,影片中由不同回放选项控制的不同部分有不同的VOB ID。
...全文
2469 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧