怎样打开这些文件:*.bup,*ifo,*vob

怎样打开这些文件:*.bup,*ifo,*vob,第1张

是DVD光盘里面的文件
。vob文件用来保存所有MPEG-2格式的音频和视频数据,这些数据不仅包含影片本身,而且还有供菜单和按钮用的画面以及多种字幕的子画面流。ifo文件用于控制VOB文件的播放,在这个文件中可以找到如何控制vob文件中数据播放的信息。由于ifo文件对光盘能否正常播放至关重要,因此将所有的ifo文件都保存了一份副本,即同名的bup文件。在每个DVD光盘中都有视频管理器(VMG),它存放在VIDEO_TSifo文件中,保存了光盘的全局信息,如光盘可以在哪个地区播放等。同时,光盘还将用于显示菜单的数据保存在VIDEO_TSvob文件中,当光盘插入到光驱中时播放器会首先显示这个菜单,大多数菜单可让观众指定场景、选择语言字幕等。
DVD上都有些什么呢?
DVD上面的东西到底都是什么?VOB、IFO、BUP文件都是做什么用的?这里我们会详细讲解。
打开一张DVD光盘的时候你会看到至少两个目录:
22082000 03:20 <DIR> AUDIO_TS
22082000 05:53 <DIR> VIDEO_TS
AUDIO_TS 是用作DVDAudio的(目前我还没见过这种盘)而VIDEO_TS是用来存储数据的。可能还有其他一些给个人电脑使用的包含了dvd-rom特性的目录。
让我们看看VIDEO_TS目录:
22082000 05:53 <DIR>
22082000 03:20 <DIR>
22082000 05:23 12'288 VIDEO_TSBUP
22082000 05:23 12'288 VIDEO_TSIFO
22082000 05:23 333'824 VIDEO_TSVOB
22082000 05:23 59'392 VTS_01_0BUP
22082000 05:23 59'392 VTS_01_0IFO
22082000 05:23 8'192 VTS_01_0VOB
22082000 05:27 1'073'643'520 VTS_01_1VOB
22082000 05:31 1'073'631'232 VTS_01_2VOB
22082000 05:32 104'785'920 VTS_01_3VOB
22082000 05:32 88'064 VTS_02_0BUP
22082000 05:32 88'064 VTS_02_0IFO
22082000 05:32 59'379'712 VTS_02_0VOB
22082000 05:36 1'073'436'672 VTS_02_1VOB
22082000 05:40 1'073'549'312 VTS_02_2VOB
22082000 05:45 1'073'502'208 VTS_02_3VOB
22082000 05:49 1'073'371'136 VTS_02_4VOB
22082000 05:53 1'073'555'456 VTS_02_5VOB
22082000 05:57 810'952'704 VTS_02_6VOB
你可以看到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是给51环绕立体声用的。
VOB文件可以包含一个主要的视频流和数个多角度视频流,使你可以在观看的时候切换不同视角。这个功能通常是在回放时用来显示情节串联图板(storyboards)或者一些其他的附加功能。视频流的最大比特率是98mbit。视频流和音频流加在一起任何时刻都要小于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:00290 @LBA 1]
Width = 720
Height = 480
Aspect-ratio = [3] 16:9 display
Frame-rate = [4] 2997 (30000/1001) fps
Found 0xBD = Private 1, sub 0x80 [PTS 0:00:00224 @LBA 99]
Found 0xBD = Private 1, sub 0x81 [PTS 0:00:00224 @LBA 100]
Found 0xBD = Private 1, sub 0x82 [PTS 0:00:00224 @LBA 101]
Found 0xBD = Private 1, sub 0x83 [PTS 0:00:00224 @LBA 102]
Found 0xBE = Padding [@LBA 117]
Found 0xBD = Private 1, sub 0x20 [PTS 0:00:00724 @LBA 169]
Found 0xBD = Private 1, sub 0x21 [PTS 0:00:00724 @LBA 170]
Found VOB-ID: 02/CELL-ID: 01 [@LBA 378]
如前所述通常只有一个视频流,它的ID永远是0xE0。PTS是Program Time Stamp程序时间标志,在VOB的开始部分描述一个流在什么时间开始。你可以看到分辨率是720x480,这是一张NTSC制式的DVD。帧率是2997。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:01479 @LBA 4]
Found 0xC0 = Audio 0 [PTS 0:00:00440 @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_1vob -if:\video_ts\vts_02_0ifo)
Parsing "f:\video_ts\vts_02_0ifo"
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的部分备份,也是不加密的。
仔细看看
我们现在已经了解了各种文件格式,让我们再看看实例:
22082000 05:23 12'288 VIDEO_TSBUP
22082000 05:23 12'288 VIDEO_TSIFO
22082000 05:23 333'824 VIDEO_TSVOB
22082000 05:23 59'392 VTS_01_0BUP
22082000 05:23 59'392 VTS_01_0IFO
22082000 05:23 8'192 VTS_01_0VOB
22082000 05:27 1'073'643'520 VTS_01_1VOB
22082000 05:31 1'073'631'232 VTS_01_2VOB
22082000 05:32 104'785'920 VTS_01_3VOB
22082000 05:32 88'064 VTS_02_0BUP
22082000 05:32 88'064 VTS_02_0IFO
22082000 05:32 59'379'712 VTS_02_0VOB
22082000 05:36 1'073'436'672 VTS_02_1VOB
22082000 05:40 1'073'549'312 VTS_02_2VOB
22082000 05:45 1'073'502'208 VTS_02_3VOB
22082000 05:49 1'073'371'136 VTS_02_4VOB
22082000 05:53 1'073'555'456 VTS_02_5VOB
22082000 05:57 810'952'704 VTS_02_6VOB
VIDEO_TS是最先播放的项目。这是在制作时被设定当一张盘被插进播放器时最先播放的东西。通常这些是版权声明,不过也会有一个选择菜单语言、预告之类的菜单。video_tsvob包含视频和音频,video_tsifo包含导航信息,video_tsbup是video_tsifo的备份。
这里还有两个ifo文件: vts_01_0ifo 和 vts_02_0ifo。文件名中前两个数字表示标题数,很显然最多只能有99个标题(不存在以vts_00_开头的这类文件) 。每个标题下最多可以有10个VOB文件,其中vts_xx_0vob也就是第一个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。

参考资料:

>xH264的ES原始数据一般是以NAL(Network Abstract Layer)的格式存在。可以直接用于文件存储和网络传输。每一个NALU(Network Abstract Layer Unit)数据,是由数据头+RBSP数据组成。
首先需要将数据流,分割成一个一个独立的NALU数据。
接着获取NALU的nal_type,i_nal_type的值等于0x7表示这个nalu是个sps数据包。找到并解析这个sps数据包,里面包含有非常重要的帧率信息
time_scale/num_units_in_tick=fps
然后根据nal_type判断slice(H264中的slice类似一个视频帧FRAME的概念)。其中nal_type值小于0x1,或大于0x5,表示这个NALU属于一个slice。

解决方法如下:
一、
1,file-->import data 选择相应的txt文件,在提示的对话框里,
2,点next直到finish,然后再file-->save workspace as ,然后改成你想要的名字就可以了。
二、
1,假如矩阵AB都已赋值,现在需要将A,B矩阵保存成mat格式文件,执行如下命令:save mydata A B 就会把A B矩阵数据保存在mydatadat文件中了,
2,保存指定数据为MAT文件:假如我们只想保存A矩阵,那么,我们可以用如下命令:save mydata2 A 回车,这样就可以将矩阵A单独保存起来了,
3,保存所有数据为MAT文件:如果有多个矩阵,都需要将其保存,如,这样写,save mydata2 A B C D。
4,读取mat文件所有数据:首先是将你想打开的mat文件所在的目录设置为当前工作目录,然后执行如下命令:load mydata,就会将mydata中的所有数据加载到当前工作环境中;
5,读取MAT文件指定数据:在设定完当前目录之后,如果仅仅想读取MAT文件中的指定数据,例如在上面保存的mydata3中,只想读取其中的矩阵A,那么可以用如下命令:load mydata3 A,可以看到A矩阵被成功加载到了当前工作空间,而B矩阵并没有被加载。,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13363204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存