关于 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 抓取转换工具
Windows
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 的配置文件