前言
本教程的宗旨是用Freeware转出最好的iPod视频,以尽量简单的方式讲解。
最后更新于:2009年8月26日 / Last update on Aug/26/2009
本文可任意转载或创作衍生作品,转载或创作时请遵守以下协议并保留以下文字。
iPod Conversion Guide is licensed under a Creative Commons 署名-非商业性使用-相同方式共享 3.0 Unported License. 基于www.crook.co.cc上的作品创作。
Index - 索引
关于片源:
既然我们要转换出质量最好的iPod/iPhone视频
那么片源最好是DVDRip或是以上级别的……
高质量片源怎么找就不用问我了吧?
那么片源最好是DVDRip或是以上级别的……
高质量片源怎么找就不用问我了吧?
关于iPod的硬件机能:(看不懂的话请跳过……)
iPod video(固件1.2及以上)/ iPod Classic 6Gen/Nano 4Gen/ iPod Touch 2Gen/iPhone 3G | iPod video(固件1.2以下) 这玩意已经过时了…… 所以后文就不讨论这个了…… | |||
---|---|---|---|---|
MPEG-4 AVC | MPEG-4 ASP | MPEG-4 AVC | MPEG-4 ASP | |
码率 | 1.5mbits | 2.5mbits | 768kbits | 2.5mbits |
最高帧率 | 30fps | |||
Profile | Baseline @ L3.0 | Simple | Baseline @ L1.3 | Simple |
最高像素 | 307,200 | 76,800 | 230,400 | |
最高分辨率 (4:3) | 640 * 480 | 320 * 240 | 544 * 416 | |
最高分辨率 (16:9) | 624 * 352 | 736 * 416 | 368 * 208 | 624 * 352 |
最高分辨率 (2.35:1) | 640 * 272 | 848 * 360 | 416 * 176 | 704 * 304 |
最高音频 | 160kbits, AAC-LC | |||
文件格式 | m4v, .mp4, .mov |
最优化的方案:(看不懂的话请跳过……)
- 编码方式:
当然是选最好的—— MPEG-4 AVC(H.264) + AAC-LC
要用TV Out的话建议为—— MPEG-4 ASP(Xvid) + AAC-LC (MPEG-4 ASP支持的分辨率更高一点) - 帧率:不超过30,最好和片源相同
- 码率:
AVC(H.264)只能是VBR,所以我们不去它的深究码率问题,1mbits就差不多了,用MeGUI给的相应预设配置就好了
ASP(Xvid)支持CBR或VBR,建议VBR,可以减小视频大小,同样1mbits左右就差不多了
ASP(Xvid)在相同码率下视频质量不如AVC(H.264),但可以提供更高分辨率 - Profile:
我不知道怎么翻译比较好,大家理解为级别好了。这玩意我花了10分钟研究,才搞清楚……
iPod 最高支持 MPEG-4 AVC - Baseline @ L3.0 ,所以就用它了(你要是还在用不支持它的老固件我也没办法……)- 小知识:
AVC分为4个Profile,每个Profile对应一些Level,每个Level有对应一些参数,感兴趣的看这里 http://forum.doom9.org/showthread.php?p=678891#post678891。
- 小知识:
- 分辨率:
机型 iPod Classic iPod Nano iPod Video iPod Touch iPhone 3G iPhone 硬件分辨率 320 * 240 480 * 320 推荐分辨率 4:3 320 * 240(AVC) 480 * 360(AVC) / 416 * 312(AVC) 16:9 320 * 180(AVC) 480 * 272(AVC) 2.35:1 320 * 136(AVC) 480 * 200(AVC) 推荐分辨率 Best for TV Out 4:3 640 * 480(AVC) 16:9 624 * 352(AVC) / 736 * 416(ASP) 2.35:1 640 * 272(AVC) / 848 * 360(ASP) 关于TV Out的说明 使用最大的分辨率可以提高TV Out的质量
但可能导致在iPod上观看时画质下降(iPod视频缩放的算法造成的……)
所以如果不用TV Out,分辨率建议使用屏幕的硬件极限(即宽度上点对点) - 音频:
虽然官方只说支持到160kbits, AAC-LC
但是事实上用 HE-AAC + PS 的方式也可以~且效果更好啊~
最好的情况当然是你的原始文件直接符合要求……这样就可以免去转码的问题 - 字幕:
MP4封装是支持在文件中挂SRT或SUB的“隐藏式字幕的”(iTunes中这么称呼)
但是仅限文本字幕,无法加高级特效或坐标等
如果片源的字幕是SRT或SUB的文本字幕,建议用隐藏式字幕,请参考本文中“关于软字母”一节
而像ASS这类带特效的字幕就直接压到影片里吧……
需要的工具:
从安装说起……
- 请先到sourceforge.net下载MeGUI http://sourceforge.net/projects/megui (执行需要 .NET Framework )
- 安装MeGUI。如果执行时出现应用程序初始化失败,请下载.NET Framework。
- 第一次运行时请在Options菜单中选择Update,下载更新列表时稍稍等一回,之后点右下角的Update更新。
更新到Profile Collections时请根据自己需要选择,我们这里需要x264: Device - iPod5.5G
分解片源
- MKV格式请用“MKVextractGUI”分解为视频轨,音频轨,字幕轨。视频轨用“avc2avi”重新封装为AVI。(具体方法可以参考这里)
- AVI格式请用AVIMuxGUI把音频轨分离。
编写AVS脚本
- 说明:若想使用软字幕(即“隐藏式字幕”),请参考本文中“关于软字母”一节
- 打开记事本,参照以下格式写:
Directshowsource("AVI片源")
TextSub("字幕位置") #IDX+SUB这样的图形字幕请这样写 VobSub("字幕所在位置")
convertToYV12() #这一句并非必要,加上可以解决不同格式之间的色彩问题
lanczosresize(320,240) #分辨率为宽,高。具体请参照前面的推荐分辨率 - 保存为*.avs
转换视频
- 首先说明,因为MeGUI直接转换出的MP4可能会有“Error-2002: a bad public movie atom was found in the movie”这样的错误。所以我们先将视频转换为RAWAVC,然后再和音频封装。
- 运行MeGUI,加载保存的AVS,如果问是否使用FFShow,选永远用,会有一个预览窗口打开,看着没问题就可以关掉了
- Vedio Output可以不管……你设个位置也行
- Encoder Settings选择x264: Device - iPod5.5G
- 点击右边的Config,建议把Mode设为Auto 2 pass,转到Advanced标签页,在Custom Commond Line加上这么一句
--fps 24000/1001
这条命令是调整输出帧速,不加永远是23.000
整数就用整数,23.976请填24000/1001,29.97请填30000/1001 - 点Update保存这个Profile,或者点New另存。然后点OK。
- File Format请选择RAWAVC
- 点Enqueue把这个任务加入队列,要添加多个请一个一个加。
- 转到Queue页面,点Start,开始漫长的等待吧……
我用AMD Athlon64 X2 4000+ OC@2.8G 大概每1分钟可以压1分钟长度640×480的视频……
转换音频
- 抽取片源的音轨
AVI可以用AVI Mux GUI抽取
MKV用MKVextractGUI抽取
这两个应该都能在MeGUI安装目录里一个名为Tools的文件及里找到
其它格式请自己解决…… - 如果音轨是AAC(HE-AAC+PS/HE-AAC/AAC-LC均可),那就可以直接用,无需进行转换,可以直接跳到合成……
- Audio Input 导入你的音频
- Cuts忽略……你真的需要我也没办法……
- 点Config,Profile选NERO-AAC:NDAAC - iPod - High
(这个MeGUI不会自动下载,请先下载。之后在Options-Settings-Program Paths-Audio里设置好neroAacEnc.exe的位置) - Extension选RAW-AAC
- 点Enqueue把这个任务加入队列,要添加多个请一个一个加。
- 转到Queue页面,点Start……
合成
- MeGUI-->Tools菜单-->Muxer-->MP4 Muxer
- Video选择.264的RAWAVC视频,设置一下帧率(切记与转换时设置相同)
- Audio选则.AAC的RAW-AAC音频,设一下Language
- 点Queue,到Queue标签页,点Start
关于软字幕
- 首先,这里讲解的是软字幕(soft sub,iTunes中称为“隐藏式字幕”)的压制方法。
请先完成上面的步骤将视频压好。
- 在MeGUI的安装目录找到tools文件夹,进入并找到mp4box
- 将压好的mp4格式视频直接改后缀名为m4v
- 用subresync或类似软件把字幕转成srt
- 把srt字幕的编码改成UTF-8(可以用记事本改)
- 用MP4BOX(在CMD下)执行这样一句(不含引号)“mp4box -ttxt filename.srt”
- 用记事本打开这个ttxt文件
先找到如下一行<textstreamheader width="400" height="60" layer="0" translation_x="0" translation_y="0">
width指字幕的最大宽度,单位为px(像素),改成直接和影片宽度相等就好
(要是设的大于视频尺寸,iTunes自动加白边,丑死了~)
height指字幕的大小,单位为px(像素),设置为实际大小的两倍。依个人需要~
translation_y指字幕在影片中的垂直位置,这个值很重要!- 要是希望字幕的下边和影片的下边重合,字幕在影片里,请设置为:影片高度-字幕高度
- 要是希望字幕在影片下面,请设置为:影片高度-(字幕高度/2)
因为iTunes会帮你加白底所以要改掉默认的字幕颜色 - 要是希望把字幕的上边和影片的上边重合,字幕在影片里,请设置为:-(字幕高度/2)
极不推荐,因为顶上会多出高『字幕高度/2』的白边,会很不爽~
- 接着找如下一行(改字幕颜色,默认是白色,不想改请跳过~)
<Style styles="Normal" fontID="1" fontSize="18" color="ff ff ff ff"/>
前几个标签iTunes会无视掉……包括fontsize……
这里要注意的就是color,也就是字体颜色,格式为R G B A(分别是红/绿/蓝/透明,取值为00~FF)
FF FF FF FF是全白不透明
而黑色不透明是00 00 00 FF~ - 改好了就保存吧~
- 接着用MP4BOX(在CMD下)执行这样一句(不含引号)“mp4box -add filename.ttxt:lang=threeDigitLanguageCode filename.m4v”,将字幕打进去~
检查
- 不是转好了么?NO!(谁叫Apple和别家不一样呢……)
- 由于iTunes检测长度是以最长的轨道为准……所以如果视频比音频短了0.02s之类的事发生,将会在播放到最后时白屏。所以我们要针对这个问题做个检查。(某组的DVDRip让我做了若干次这事……)
- 下载一个叫MP4Info的软件 http://rubyforge.org/projects/mp4info/
- 在命令提示符中执行MP4Info "你的MP4文件",会看到类似下面的信息: 1-01.mp4:
- 可以看到这里audio是1450.816 secs,video是1451.450 secs。这个是没有问题的。但是要是Audio>Video,那就有问题了……
- 在MeGUI的安装目录下的Tools目录中找到一个叫MP4box的程序,在命令提示符中执行这样一句
MP4Box.exe -splitx 0:1451 "有问题的MP4文件"
这里1451是视频长度,因为MP4Box有点问题,所以切割长度就直接视频长度取整数 - 输出文件,XX_001.mp4便是完成的文件。
Track Type Info
1 video H264 Baseline@3, 1451.450 secs, 853 kbps, 640x352 @ 23.976024 fps
2 audio MPEG-4 AAC LC, 1450.816 secs, 194 kbps, 48000 Hz
导入iTunes
- 这个我就不多说了,相信大家都会
- 记得编辑标签!这是好习惯!
外部链接
0 comments:
Post a Comment