目前DVD制作软件形形色色,功能异常强大,试用过锐动天地和TMPG Enc Authoring制作,效果都不理想,对DVD结构的控制能力不够,制作普通家用的DVD还是不错,难以实现准商业化的DVD制作和逻辑跳转。本次选中自由软件DVDAuthor来完成制作工作,也曾尝试GUI For DVDAuthor,但折腾了几把,没有学会怎么用它,只好放弃,采用纯命令行的方式进行。
一、准备工作
1、软件准备:DVDAuthor、MjpegTools、DVDReMakePro、PS软件(我用美图秀秀和GIMP)、转码编辑软件(锐动天地、TMPG Enc Authoringn或Mencoder都行),DVDAuthor和MjpegTools是必备软件,PS和转码编辑软件选自己顺手的,DVDReMakePro用于制作调试和校对。因为我不会PS,所以我选择用AUTOCAD来绘制和准确定位菜单。
2、知识准备:(1)推荐熟读DVDAuthor官方文档,重点掌握1. Examples和I. DVDAuthor Man Pages(DVDAuthor、spumux)这两部分内容,这是最准确、最权威的制作文档,所有的操作规范和要求都包含在里面,需要细细品读、认真领悟、体察入微,否则入坑是一定的;(2)《Some thoughts on DVD authoring》(James Tappin,24 Apr 2003),主要帮助理解VMGM和VTSM的跳转规则,里面有一些spumux和DVDAuthor的实例,可以辅助理解VMGM、VTSM和Title互跳规则; (3)《Creating a DVD with a menu》(mythtv.org/wiki),主要学习用jpeg2yuv合成DVD菜单,里面包含了N制和P制示例,非常实用;(4)《How to author a DVD in Linux》(Kirk Bauer),主要学习逻辑控制。
二、DVD的结构和参数
1、光盘结构。一张DVD主要由VMGM和TitleSet两部分构成,组织层级:VMGM->TitleSet->titles(menus)->PGC->VOB(title,chapter,cell)->Button->操作式(if else +/-)。VMGM类似于DVD光盘的引导区,DVD播放器从VMGM开始读取一张光盘的内容,VGMG完成片头CG菜单和TitleSet内容的链接指向和关键逻辑控制;TitleSet为titles合集,在物理结构上与VMGM同级,在实际操作中通常做为VMGM的下级菜单使用,在VMGM中跳转或链接到TitleSet中的首菜单(TitleSet Menus)或第一章节内容(Title 1、Chapters 1);按照官方文档的说法,一张光盘可包含最多一个VMGM和多个TitleSet,VMGM和TitleSet均可包含0个或多个菜单,一个TitleSet包含最多一个titles标识。
2、菜单(Menus)和标题(Titles)。菜单(Menu)做为DVD光盘内容的索引,实质上是一个带强制显示字幕的mpeg视频文件,因此在spumux配置文件中有force="yes"参数,最多可包含video、audio、subpicture各一个和多个pgc,在物理结构上由相当数量的可点击、可选择的按钮(Button)构成,这些按钮由pgc组织起来,按钮指向TitleSet、Menu、Title和Chapter实现点击链接;Titles负责组织所在TitleSet的所有内容,包含1个video、8个audio、32个subpciture和任意数量的pgc,通常带vob的pgc构成一个单独标题(title),每个title(vob)又可划分为一个 (Chapter)或多个章节(Chapters)。
代码:
TitleSet
This is the highest level of structure within a video DVD. Every DVD has at least 1 titleset. All the files associated with a given titleset start with VTS_nn where nn is the titleset number (starting from 1).
3、PGC、title、chapter、button和cell。PGC做为DVD的基本功能单元,用于DVD资源的组装和蓝分,在VMGM和TitleSet中大量被使用,常出现在Menus和Titles里面。PGC可以理解为一个相对独立的功能片断或函数,设有pre和post字段,主要组装button、vob等资源。PGC可以设置title(只能用于VMGM Menu)、root(常用于TitleSet根菜单)、subtitlesub、audio、angel和ptt。一个包含VOB的PGC在DVD中常被视为一个title,可按跳转规则直接跳转。一个VOB不做切分就是一个title,视其PGC在含有VOB的PGC中的位置排序自动命令为title X。如果对VOB用chapter和cell参数进行细分,就是一个或多个章节。通常对单个MTV曲的VOB按chapter来处理,对含有多个MTV曲的VOB用chapter和cell分割后可变成一个title的多个chapter。通常理解,chapter和cell不混用,官方文档的说法是有了cell就不必有chapter了。Chapter和cell都是title分片分断的一种方式,利用它可以把一个演唱会的VOB从逻辑上切成多首单曲MTV。Cell按官方文档的定义,是一种比chapter更详细的title分片标记。Chapter只有分片的开始时间, 00:00:00做为chapter 1,在跳转或链接到chapter时须注意这个问题。如果一场演唱会第一道曲子不从00:00:00开始, chapter 1将会指向00:00:00开始的开场白。Cell可以指定划分title单片的开始和结束时间,cell带有chapter和program属性,指定program属性,可以用遥控的Pre/Next按钮来搜索cell,同时指定chapter属性,该Cell就变成独立chapter。Cell也可带commands,按官方文档的说法,当该Cell被播放时,该Cell的命令将被执行。Button实质上是一个透明背景上的图案边界,可以是实心填充的图案,也可以是图形边框,按官方文档的说法,spumux通过在这个图案边界之间划矩形来确定各个按钮的位置,最后在控制台以左上角和右下角座标(X0,Y0)-(X1,Y1)方示来显示每个按钮的位置。通常菜单按钮采用长条色带、边框,甚至可以用某个小图案(一朵小花),在需要对应内容的位置出现,通过指定button的commands,实现点击或选择按钮链接对应内容。
代码: