如何获取DVD内含音轨数目?感兴趣的朋友一起来研究研究。 ( 积分: 200 )

  • 主题发起人 主题发起人 solo_1978
  • 开始时间 开始时间
S

solo_1978

Unregistered / Unconfirmed
GUEST, unregistred user!
DVD格式允许有多个音轨,如电影一个音轨国语,一个英文。又如卡拉OK,一个原唱一个伴唱。一般的DVD机能自动识别碟片有多少个音轨,而大部分DVD播放软件也能自动识别。有没有人研究过如何获取文件包含多少个音轨呢?
我是做VOD的,从VOB文件中,能否得到媒体文件中包含多少个有效音轨及其编号呢?
我以往的做法是在1、2、3三个中进行切换,并在数据库中记录了伴唱音轨编号,但这样的弊端是显然的。如果能通过程序自动获取有效音轨,则更为方便。
希望感兴趣的朋友一起来研究研究。或许未必得到最终解决办法,但起码也会从中学到不少东西。
 
DVD格式允许有多个音轨,如电影一个音轨国语,一个英文。又如卡拉OK,一个原唱一个伴唱。一般的DVD机能自动识别碟片有多少个音轨,而大部分DVD播放软件也能自动识别。有没有人研究过如何获取文件包含多少个音轨呢?
我是做VOD的,从VOB文件中,能否得到媒体文件中包含多少个有效音轨及其编号呢?
我以往的做法是在1、2、3三个中进行切换,并在数据库中记录了伴唱音轨编号,但这样的弊端是显然的。如果能通过程序自动获取有效音轨,则更为方便。
希望感兴趣的朋友一起来研究研究。或许未必得到最终解决办法,但起码也会从中学到不少东西。
 
顶一下,大家发表一下意见啊!
 
这个很简单啊
你是用什么方法做播放?
 
不管什么方法,软接压也好,神龙卡也好,你知道的都可以发表一下,大家研究研究啊。
 
这用得着研究吗


[?]
 
CoolSlob
给点有价值的信息!Please!
 
我也正在写这个,分析了几天,发现VOB 中音轨(目前我手上只有AC3的片) 是由 00 00 01 BD流开始的,在首码结束跟着就是音轨号 0x80 0x81..0x87?? 目前我只见着两音轨 0x81,0x80. 代分析中,望有所提示.
 
chenjun631
很好,看见你贴的东西,有点熟悉的感觉,记忆中好象N多年前在超级解霸中看过0x80、0x81,记得他在播放DVD时直接就是提供里这两个选项来选择音轨的。
 
这个功能可以从支持DVD的Filter里的大概叫IAudioStreamSelect接口找到相关的支持
 
补充:
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环绕立体声用的。

所有的AC3音频流都在 0xBD 数据流,子数据流0x8x中从 0x80到0x87。DTS流往往ID是 0xBD 0x88 或 0xBD 0x89。PCM流在 0xBD 0xAx,从0xA0到0xA9。MP2在0xCx

查找出有多少个不同的流ID 那么就是有多少个音轨了
 
呵呵
还没搞定啊?

搞那么复杂干嘛?自己分析文件去读这些不累死。

用DirectShow.
创建一个FileSource , 一个MPEG Splitter (也可以使用神龙卡自带的)
将Filter Source 和MPEG Splitter连接上。
神龙卡的MPEG Splitter实现了IAMStreamSelect接口。
现调用IAMStreamSelect的Count方法,得出的就是音轨的数目。

---------------------------------------------------------------
any problem email to CoolSlob@163.com
 
得到音轨的数目我觉得没有多大意义。而我的目的是能否从1、2、3……音轨中分辨出哪一个是伴唱,也就是自动识别卡拉OK轨。这样就无需要在数据库中对每一个文件进行记录,准确实现原伴唱的切换。
 
这个好像不太可能,因为VOB中根本就没有这方面的记录,你如何能分析出来?
 
这是不太可能的了,要是可以就不要在数据库中做定义了
 
后退
顶部