行者无疆 始于足下 - 行走,思考,在路上
DVD视频提取转换初步研究
Table of Contents
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字幕上用于选择章节的东西.
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的配置文件