关于 DVD 格式

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

关于 VOB 格式

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

关于 TS 流和 PS 流

TS 流

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

PS 流

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

关于 DVD 格式转换

几个概念

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

GUI 抓取转换工具

  1. Windows

  2. Linux

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

基本工具

  • 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 下两款非常有名的播放器,功能非常强大,支持 framebuffer 和 ascii lib 的输出,很有趣

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

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

h264enc 交互式脚本合并

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

Todo list

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