创建带菜单的DVD

Linux下创建带菜单DVD
[size=3][color=green][b]怎么在linux下创建带菜单的DVD[/b][/color][/size]


[quote][size=3][color=blue][b]虽然现在在linux中有图形化界面的工具来创造带菜单的DVD,现在在命令行界面和一些工具的帮助下完成此事也成为可能。

这份文档是为帮助那些准备做如下事情的人们:
1,完成将一个视频文件(.avi, .mpg, .wmv, .mov, etc.)转还为可以在一个标准DVD播放器可以播放的DVD介质中。
2,创建专业风格的带有音频的菜单,允许选择标题、段落和其他的菜单。

所需要的工具:
* 最新的mjpegtools 1.6.2
* 最新的transcode 0.6.12
* 最新的dvd+rw-tools 5.16.4.8.6
* Mencoder (包含在mplayer软件包中),'USE="encode emerge mplayer'
* GIMP图像处理程序
* Dvdauthor 0.6.9

注:
如果要升级的话,女孩需要做:
代码:
# emerge gentookit
# ACCEPT_KEYWORDS="~x86" revdep-rebuild
来修正库文件依赖性问题。

选用的工具:
* Xine - 在烧录DVD之前测试一下DVD菜单,'emerge xine-ui'
* Normalize - 规范音频.pcm/.wav文件的音量
* Toolame

为方便读起来更简单,我将使用一些真的文件名,并且将他们和所有新创建的文件放置在同一个文件夹。
出于练习的目的,我选用了两个视频文件,是从[url]http://www.matrix-xp.com[/url] 下载的,我将文件名分别改为‘matrix.mpg’和‘outtakes.mpg’。
我也将使用THX主题作为DVD启动的主题,命民为‘thx.mpg’
如果你打算将这些应用于个人使用之外,请注意版权问题。

给电影编码
知道或找出你将使用什么TV格式。
对于欧洲和澳大利亚大部分地区来说,使用PAL。
对于美洲(或者其他?),使用NTSC。

对于PAL:
代码:
# transcode -i matrix.mpg -V -y mpeg -F d -Z 352x288 --export_fps 25 --export_asr 2 -E 48000 -b 224 -o matrix
# transcode -i outtakes.mpg -V -y mpeg -F d -Z 352x288 --export_fps 25 --export_asr 2 -E 48000 -b 224 -o outtakes
# transcode -i thx.mpg -V -y mpeg -F d -Z 352x288 --export_fps 25 --export_asr 2 -E 48000 -b 224 -o thx

对于NTSC:
代码:
# transcode -i matrix.mpg -V -y mpeg -F d -Z 352x240 --export_fps 29.97 --export_asr 2 -E 48000 -b 224 -o matrix
# transcode -i outtakes.mpg -V -y mpeg -F d -Z 352x240 --export_fps 29.97 --export_asr 2 -E 48000 -b 224 -o outtakes
# transcode -i thx.mpg -V -y mpeg -F d -Z 352x240 --export_fps 29.97 --export_asr 2 -E 48000 -b 224 -o thx

以上将会产生六个文件‘matrix.m2v/matrix.mpa’,‘outtakes.m2v/outtakes.mpa’,‘thx.m2v/thx.mpa’,这些文件已经从原始文件中分为单独的视频和音频文件。视频(.m2v)已经编码为DVD兼容的格式,音频(.mpa)已经重新采样并编码(从标准的44kHZ的采样率转为DVD需要的48kHZ的采样率)。

代码:
# mplex -f 8 -o matrix_dvd.mpg matrix.m2v matrix.mpa
# mplex -f 8 -o outtakes_dvd.mpg outtakes.m2v outtakes.mpa
# mplex -f 8 -o thx_dvd.mpg thx.m2v thx.mpa

以上将会将新产生的音频和视频合并为DVD视频文件。
可以用mplayer或xine来检验这些文件。比如:'mplayer -vo xv matrix_dvd.mpg'

对于非标准的文件格式,如.wmv, .mov, .asf等等。必须用mencoder将电影编码为.avi格式,如同这样:
对于PAL:
代码:
# mencoder -o ouput_file.avi -ovc lavc -oac lavc -ofps 25 your_movie.mov

对于 NTSC:
代码:
# mencoder -o ouput_file.avi -ovc lavc -oac lavc -ofps 29.97 your_movie.mov

然后可以像前面正常情况下使用transcode命令。
如果mencoder出错,提示如下信息:
Quote:
Couldn't open codec mp2, br=224
那么试着将下面其中的一行到你的mencoder语句中:
-channels 2
-srate 22050
-srate 32000
-srate 48000

注意:
* 如果音频/视频(AV)同步不准确,试着transcode的AV同步自动修正参数换为'-D 0'如下:
代码:
# transcode -i matrix.mpg -V -y mpeg -F d,1 --export_fps 25 -Z 352x288 --export_asr 2 -E 48000 -b 224 -D 0 -o matrix

* 如果transcode出错或被拒绝,用mplayer辅助transcoe如这样:
代码:
# transcode -i matrix.mpg -V -x mplayer,mplayer -y mpeg -F d -Z 352x288 --export_fps 25 --export_asr 2 -E 48000 -b 224 -o matrix

* 记住,你可以在用trancode编码时用mplayer或xine来预览.m2v文件。没必要等到编码完成后在来看结果,这对比较大的电影方便。


创建菜单:
对于PAL:
打开Gimp程序,创建一个大小为720x576,分辨率为75dpix80dpi的新图像。

对于NTSC:
创建一个大小为720x480,分辨率为81dpix72dpi的新图像。

在图像上鼠标右击,选择 Image -> Alpha -> Add chanel。
在图像上鼠标右击,选择 Image -> Layers -> Layers, Channels & Paths
创建层‘button_highlight’。
创建层‘button_select’。
选择背景层,画出菜单的背景图像。

我选用 matrix 'green data dribble' 作为背景,这是我从一个免费墙纸网站中下载下来的。
调整图像的大小到准确的 720x576,鼠标点击图像选择 Image -> Scale Image & set。 然后复制/粘贴到我新建图像文件的背景中。
这里有这个图像文件:

我希望对于不同的电影,菜单中有可选择的快照。
快照可由xine截取得,图像大小再由gimp修改,然后粘贴到背景层中。
这里有这个图像文件:

选择button_highlight层,勾划出按钮形状。要看如果在gimp中画出完美的长方形、正方形和圆形,可以参卡这里:[url]http://www.cubicdesign.com/gimp/1_3/[/url]
这里有这个图像文件:

隐藏button_highlight层,并保存背景层。
做这个我们可以如下做:选择button_highlight层,并在这些层、频道和路径(Layers, Channels & Paths)中应用不透明滑动块(Opacity slider),使他不可见。
点击背景层,右击图像,选择 File -> Save as
保存背景层为matrix_menu_background.jp。
(注:背景必须为jpg格式)

同样的方法选择button_highlight层。使用不透明滑动块(Opacity slider)使button_highlight层恢复,隐藏背景层。
点击button_highlight层,右击图像,选择 File -> Save as
保存button_highlight曾为matrix_menu_highlight.png。
(注:按钮层必须为png格式)

选择button_select层,并勾划出和button_highlight一样的按钮,但颜色不一样。一个简单的方法是打开matrix_menu_highlight.png,右键点击图像,选择 Image -> Colors -> Color map rotation,选择一个不同的颜色,但是在菜单背景中可以显现的颜色。
将这个新的图像保存为matrix_menu_select.png。
(注意:必须为png格式)

将这些合并在一起
将菜单背景转换为DVDmpg格式
对于PAL:
代码:
# jpeg2yuv -n 50 -I p -f 25 -j matrix_menu_background.jpg | mpeg2enc -n p -f 8 -o matrix_menu_background.m2v

对于NTSC:
代码:
# jpeg2yuv -n 50 -I p -f 29.97 -j matrix_menu_background.jpg | mpeg2enc -n n -f 8 -o matrix_menu_background.m2v

给菜单创建一些背景音乐
代码:
# mplayer yourmusicfile.mp3 -vo null -ao pcm -aofile menu_audio.pcm

根据需要用normalize是音量柔和点或大声点
代码:
# normalize -a -10dB menu_audio.pcm

转还为mpge音频:
代码:
# mp2enc -r 48000 -o menu_audio.mpa < menu_audio.pcm

如果你不需要在你的菜单中添加音乐,仍然需要创建一个静音的音频文件和DVD菜单组合,这样菜单工作才能正常。如下:
对于PAL:
代码:
# dd if=/dev/zero bs=4 count=1920 | toolame -b 128 -s 48 /dev/stdin menu_audio.mpa

对于NTSC:
代码:
# dd if=/dev/zero bs=4 count=1601.6 | toolame -b 128 -s 48 /dev/stdin menu_audio.mpa

组合菜单背景视频和音频:
代码:
# mplex -f 8 -o matrix_menu.mpg matrix_menu_background.m2v menu_audio.mpa

用spumux来将button_highlight和button_select图像融入菜单视频中。
Spumux是dvdauthor软件包的一部分。他通过一个xml文件配置。这里有我们要用到的一个xml配置文件,保存为spumux.xml:
代码:
<subpictures>
<stream>
<spu start="00:00:00.0" end="00:00:00.0"
highlight="matrix_menu_highlight.png"
select="matrix_menu_select.png"
autooutline="infer"
autoorder="rows"/>
</stream>
</subpictures>

创建最后的menu视频
代码:
# spumux spumux.xml < matrix_menu.mpg > matrix_menu_final.mpg

创建DVD
Dvdauthor通过一个xml文件配置。这里有一个我们要用到的xml配置文件,保存为dvdauthor.xml:
代码:

<dvdauthor dest="DVD">

<vmgm>
<menus>
<pgc>
<vob file="thx_dvd.mpg"/>
<post>
jump titleset 1 menu;
</post>
</pgc>
</menus>
</vmgm>

<titleset>
<menus>
<pgc>
<button> jump title 1; </button>
<button> jump title 2; </button>
<vob file="matrix_menu_final.mpg" pause="inf"/>
</pgc>
</menus>

<titles>
<pgc>
<vob file="matrix_dvd.mpg"/>
<post>
call menu;
</post>
</pgc>
</titles>

<titles>
<pgc>
<vob file="outtakes_dvd.mpg" />
<post>
call menu;
</post>
</pgc>
</titles>

</titleset>

</dvdauthor>


创建一个文件夹名为DVD。
创建DVD文件价格用如下命令:
代码:
# dvdauthor -x dvdauthor.xml

在刻录之前用xine测试一下新的菜单:
代码:
# xine dvd:/full/path/to/DVD/VIDEO_TS/

xine应该播放这个文件夹就和播放一个DVD一样。


理解DVD的分层结构
VMGM:也称作主菜单,处于DVD视频结构的最好级别。
标题集(Titleset):每个DVD至少包含一个标题集。所有的一个给定的标题集相联系的文件都以VTS_nn的形式出现(nn是标题集的标号,标号从1开始)。
标题:每个标题集包含一个或多个标题。每个标题事实上相当于一个独立的电影。如果你启动xine,并且只是告诉他去打开一个DVD,如果这个DVD没有一个更高级别的菜单,程序将会只播放第一个标题集的第一个标题就停止了。
段落:每个标题都再细分为几个段落。段落提供指向电影的记录,但是当播放器播到一个段落的最后,播放器将会继续播放下一个段落。

菜单可以和整个联系起来(此时称为视频管理菜单VMGM),也可和一个标题集联系起来(此时称为视频标题集菜单VTSM)。每种类型都可以有多于一个的菜单。
当在不同标题集时不止一个的VTSM需要是,典型情况下将会是用VMGM菜单,因为在不同标题集时一个VTSM不会自动跳到另一个VTSM。

导航菜单对象的限制如下:
一个VMGM菜单只能跳到:
* 另一个VMGM菜单
* 一个标题集的第一个VTSM
* 一个标题集的开始

一个VTSM菜单只能跳到:
* 同一个标题集的另一个VTSM
* 标题集中的一个标题或段落
* 磁盘的第一个VMGM

注:我得DVD播放器(或者其他的?)在遥控器恩'Disc'键时默认到第一个VTSM。如果是这种情况,而你又需要设置菜单可以在VMGM级别上访问另一个不同的VTSMs,你需要设置第一个VTSM如下:
代码:
<titleset>
<menus>
<pgc>
<post>
jump vmgm menu;
</post>
</pgc>
</menus>
<titles>....
这样摁'Disc'键可以让你进入VMGM菜单。

创建DVD镜像文件并刻录。
使用growisofs工具,这事dvd+rw-tools软件包的一部分。
代码:
# growisofs -Z /dev/dvd -dvd-video DVD/


最后的注意事项:
但愿你能成功使DVD工作起来
当然,更复杂的菜单可以通过增加段落到你得电影和创建嵌入式菜单(菜单一层套一层)。而这只是一个初学者的使用向导,只用到两个标题。
虽然咋看起来这有点复杂和浪费时间,但是一旦你做过几次,将会变得越来越迅速和简单。
在命令行下而不是图形化界面下编码也意为着非常快速。(大概三倍速度于在我弱弱的XP1800+下的Windows操作系统)
一些工作在图形化界面完成确实不错,但是需要太多的工具来完成这个。我认为这将需要一个开发队伍大量的工作。


感谢:
Scott T. Smith - 优秀的工具dvdauthor的作者
Thomas Oestrich - transcode的作者
The mjpeg team
Wolfgang Wershofen - 感谢他准确和仔细的帮助
Ian Pointer - 感谢他在linuxjournal.com的文章Issue# 116
James A. Pattie - 感谢他的关于'DVDs under Linux'讲演
James Tappin - 感谢他的写的dvdauthor使用说明

链接:
* Wolfgang Wershofen 已经做了一些有趣的工作,完成了一些不同的xml配置文件和一个自动完成整个菜单创建的脚本。这些东西可以在这里找到:
[url]http://www.wershofen.de/donwloads/dvdauthor.xml[/url]
[url]http://www.wershofen.de/downloads/dvdauthor_example.tar.gz[/url]
[url]http://www.wershofen.de/downloads/dvdwizard.tar.gz[/url]
* [url]http://www.linuxjournal.com[/url] - 一个有关在linux下创建DVD的有意思的文章。
* [url]http://www.pcxperience.org/james/dvd/presentations/[/url] - James Pattie's DVD讲座
* [url]http://www.tappin.me.uk/Linux/dvd.html[/url] - James Tappin的dvdauthor使用手册(现在已经更新,向那些想将DVB转换为DVD的人强烈推荐)[/b][/color][/size][/quote] 
内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性与自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性与灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线与关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环与小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控与操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性与可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件与PLC的专业的本科生、初级通信与联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境与MCGS组态平台进行程序高校毕业设计或调试与运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图与实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑与互锁机制,关注I/O分配与硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值