行者无疆 始于足下 - 行走,思考,在路上

DVD视频提取转换初步研究

1 关于DVD格式

  • Digital Versatile Disc
  • DVD五种格式
    • DVD-VIDEO: 可达17G
    • DVD-ROM:
    • DVD-R: 4.7G
    • DVD-RAM: 可以作为虚拟硬盘
    • DVD-AUDIO: 比CD的音频品质好一倍
  • DVD区域码
    • DVD联盟将全世界依地理区域分为1-6区,而每一部DVD播放机及每一片DVD都会被锁定只能在某一区中播放(依产品贩卖的地区锁上相对应的区域码)。
    • 影片的锁码必须配合播放机的锁码(第1区的影片配合第1区的播放机,第2区的影片配合第2区的播放机.)你才能顺利的观赏影片!
    • 后来产的DVD播放机一般可以播放全区域的DVD
  • DVD版权保护
    • CSS(Content Scrambling System, 内容乱码系统)
    • 防类比设备翻录
    • 区码限制

2 关于VOB格式

  • vob文件用来保存所有MPEG-2格式的音频和视频数据,这些数据不仅包含影片本身,而且还有供菜单和按钮用的画面以及多种字幕的子画面流。
  • .ifo文件用于控制VOB文件的播放,在这个文件中可以找到如何控制.vob文件中数据播放的信息。
  • 有时候.ifo文件保存了一份副本,即同名的.bup文件。
  • 每个DVD光盘中都有视频管理器(VMG),它存放在VIDEOTS.ifo文件中,保存了光盘的全局信息,如光盘可以在哪个地区播放等。
  • 光盘还将用于显示菜单的数据保存在VIDEOTS.vob文件中,当光盘插入到光驱中时播放器会首先显示这个菜单,大多数菜单可让观众指定场景、选择语言字幕等。

3 关于TS流和PS流

3.1 TS流

  • DVD节目中的MPEG2格式,TS的全称则是Transport Stream。
  • MPEG-TS主要应用于实时传送的节目,比如实时广播的电视节目。
  • TS码流由于采用了固定长度的包结构,当传输误 码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。
  • 信道环境较为恶劣,传输误码较高时,一般采用TS码流
  • TS流(DVB-T,DMB-TH等)如果断了码流,后面的随时可以再开始解码怎么看都行。

3.2 PS流

  • DVD节目中的MPEG2格式,是MPEG2-PS,全称是Program Stream。
  • PS包由于长度是变化的,一旦某一 PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。
  • 在信道环境较好,传输误码较低时,一般采用PS码流 如DVD等等。
  • ps流(主要用在DVD上)如是中间丢了一断码流,后面的都没法播了。

4 关于DVD格式转换

4.1 几个概念

  • angle: 高级的DVD支持同一段场景的不同视角(angle), 一般的DVD只有一个视角
  • Title Set: 基本上一个Title Set的视频为一组内容, 有的DVD会有好几个Title Set, 第一个Title Set往往是最长的, 包含了主体影片的内容; 其余的Title Set往往是一些影片花絮啥的.
  • chapter: 应该是DVD字幕上用于选择章节的东西.

4.2 GUI抓取转换工具

4.2.1 Windows

4.2.2 Linux

5 CLI工具, 自动化(脚本形式)的抓取转换工具

5.1 基本工具

  • lsdvd, 读取dvd信息, 可以得到title set, duration信息等等
  • dvdbackup, rip video DVDs from the command line, 同样可以读取dvd信息, 有时需要libdvdcss的支持, ubuntu上的安装方法可以参考Ubuntu Wiki.
  • h264enc, 交互式的抓取工具, bash脚本, 整个脚本将近一万行(支持非常多的配置选项)
  • ffmpeg and mencoder, linux下两款主要的音频和视频格式转换工具, 绝大多数的GUI工具都是这两个命令行工具的封装. 很多Windows播放器底层也是这两个. ffmpeg还有个有趣的Hall of Shame
  • mplayer and vlc, linux下两款非常有名的播放器, 功能非常qiangda, 支持framebuffer和ascii lib的输出, 很有趣.

5.2 土法炼钢提取vob视频文件并合成一整个视频文件

  • 原理: vob文件可以直接拼接(cat file1.vob file2.vob >> new_file.vob), 拼接出来的vob文件可以正常播放(测试了两个拼接的文件和拼接后转换的f4v文件, 网页和本地播放器均正常播放到结尾)
  • 思路:
    • 先将整个的DVD内容拷贝到硬盘(比较节省光驱资源)
    • 进入DVD视频文件目录(一般为VIDEO_TS)
    • 用lsdvd或者dvdbackup工具找出duration最长的title set, 提取出这个title set里面的vob文件
    • cat命令拼接这些vob成一个新的vob文件
    • 利用ffmpeg转换脚本转换成新的格式

5.3 h264enc交互式脚本合并

  • 原理: 给予mencoder的转换工具, 可以自动化的设置码率, 滤镜, crop参数, 提取vob文件合并到一个文件中(输出格式可以指定)
  • 思路:
    • 多做实验, 将每次做实验的结果进行对比, 选出最好的一组参数写成配置文件, 调用h264enc做自动化的处理

6 Todo list

  • 深入研究下mencoder的使用方法, 以及mencoder和ffmpeg的不同和关联
  • 深入了解分析下h264enc工具的脚本, 了解下h264enc的配置文件




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee