页面

2012年11月13日

FEZ:如何获得高星石数

Q&A

FEZ是什么?

FEZ(Fantasy Earth Zero)是日本Square Enix公司开发的一款线上角色扮演游戏,详细可浏览维基百科条目

星石为何物?

星戒(港服翻译)/星石(中国大陆版翻译)是FEZ里的一种货币,只能通过参加参加战争而获得。


流程

注意:本文以中国大陆3.0游戏版本为例,介绍如何在一场战争中将星石数最大化。

以下为个人收集到的一些影响如星石数目的要点。

  • 战斗参加时间必须多于80%并且我方必须为胜利方,进攻防守皆可。获得星石基数为6(输掉战争只有3)
  • 战斗五项评价中,评价S加3星石;评价A加2星石;评价B加1星石
  • 参加战斗人物等级小于20级时,获得星石数将有1.5倍奖励

这样下来,假设一场胜利的战斗,给予人物伤害评价为A,贡献度评价为A(也就是全场为召唤骑士状态),最后的星石数为:6 + 2 + 2 = 10 星石。如果再碰到例如星石数双倍活动外加使用星石N倍道具书,将会出现下图一场战斗获得150星石数的夸张结果。

上图这150星石是这样得来的:

(6 + 2 + 2) * 1.5 * 2 * 5 = 150

其中:

  • 黄色 6 为战场胜利所得星石基数。
  • 红色 2 为给予人物伤害评价A所得星石。
  • 蓝色 2 为对建筑物伤害评价A所得星石。
  • 绿色 1.5 为人物等级小于20级时的星石额外奖励数。
  • 紫色 2 为刚推出3.0版FE时为期一周的星石双倍活动奖励数。
  • 橙色 5 为使用了一本五倍星石获得的道具书。

于是获得了上图的150星石( ̄︶ ̄)↗,如果运气好,甚至完全可以获得两个评价S,这样累计下来星石数将更夸张。

2012年3月2日

初音ミク显卡测试程序(vocalomark)分数

前言

下面所有的测试都是以窗口模式、1024x768分辨率、四倍抗锯齿来进行。


文章修订记录

  1. 2012-04-06 20:59:12
    • 增加NVIDIA GF8600GT显卡测试数据。

各显卡测试分数

ATI HD 6570

CPU:Intel E8400 @ 3.60GHz(400x9), MEM:8GB DDR2 800


分数为 17770~17783


CPU-Z 截图


GPU-Z 截图

NVIDIA GF8600GT

CPU:AMD Athlon64 x2 3800+ @ 2.00GHz(200x10), MEM:2GB DDR2 533


分数为 7334~7339


CPU-Z 截图


GPU-Z 截图

2012年2月13日

我自己使用的FEZ游戏视频压制脚本

前言

我自己在压制FEZ游戏视频时,都是喜欢用命令行方式,所以写了些批处理脚本来自动完成这些事情。下面贴出我的批处理,喜欢的可以拿去使用。脚本目标是把 Dxtory 录制好的视频里的视频流和音频流,分别使用x264和FLAC/AAC-LC编码器进行编码,最后封装成mkv/mp4格式。

脚本使用 GPLv3 协议。


最新版本批处理脚本

下面的都是长期更新地址,存放于 Google Code

  1. 使用x264和FLAC并封装成mkv格式(用于收藏)
    使用 1st pass + crf16 模式,会生成 2nd pass 所需的 stats 文件,需不需要做 2nd pass 请自己衡量。
  2. 使用x264和FLAC并封装成mkv格式(2nd pass,用于收藏)
    作用是根据上面的脚本生成的 stats 文件进行 2nd pass,码率需要自己输入,仅在需要进行 2nd pass 才需要该脚本。
  3. 使用x264和AAC-LC并封装成mp4格式(用于分享到YouTube)
    使用 YouTube 720p 的标准压制视频,使用 auto 2pass 模式。

使用方法

请先准备好以下工具并存放到自己喜欢的位置,只要记得修改脚本里所对应的路径即可

  • AviSynth
    需要使用32bit版本,即使你是64bit系统。官网链接
  • x264.exe
    使用自己喜欢的编译版,我使用这个版本
  • avs4x264mod.exe
    64bit系统需要这个,用于把32bit的Dxtory Decoder的视频流pipe给64bit的x264编码器。我使用这个版本
  • ffmpeg.exe
  • flac.exe
  • mp4box.exe
  • mkvmerge.exe
    上面的 ffmpeg.exe、flac.exe、mp4box.exe 和 mkvmerge.exe 都可以在MeGUI目录下的 Tools 文件夹里找到。
  • neroAacEnc.exe
    用于AAC-LC编码,可以在其官网下载。

假设你想压制 E:\source001.avi 这个视频,只要把该视频以鼠标拖拽的方式拖放到脚本上即可,脚本会自动生成 E:\source001.mkvE:\source001.mp4 文件。因为我平时都是在夜晚睡觉前开始压片,所以在脚本里设置了压制完成后自动关机,不需要的可以改之。


本系列相关文章


(全文完)

2012年2月9日

FEZ游戏视频后期处理(高压篇)

前言

在《FEZ游戏视频后期处理(高清篇)》里,介绍了如何使用x264压制出高清晰度的FEZ视频,但这是以牺牲视频体积为代价的,一个25分钟视频起码有3GB以上的大小,仍然不适合分享,特别是要分享到视频网站的。所以本文将介绍如何压制出体积小、画质也不至于太差的FEZ游戏视频

本文介绍的压制方法仍然是以x264的命令行方式为主,并且是把成品视频用于上传到YouTube共享,而且达到720p的清晰度(国内的优酷、土豆之类的估计也和YouTube差不多)。

YouTube推荐的分辨率和比特率
类型 分辨率 视频比特率 立体声音频比特率
1080p 1920x1080 8000 kbps 384 kbps
720p 1280x720 5000 kbps 384 kbps
480p 854x480 2500 kbps 128 kbps
360p 640x360 1000 kbps 128 kbps
(数据来源)

在浏览本文章前,请先围观上一篇《FEZ游戏视频后期处理(高清篇)》,不然会不知道我在说啥的。 罒ω罒


文章修订记录

  1. 2012-02-11 00:23:15
    • modify:修改x264命令行参数,去除 --qpmin 0--qpmax 40
    • fix:修改错字。
  2. 2012-02-13 17:20:12

视频流部分

生成AVS脚本文件

将下面的内容粘贴到一个新的txt文件里,然后将txt后缀名改为avs。注意红字部分要替换成相应的视频文件。

AVISource("E:\FEzero_Client 2011-12-31 14-33-04-050.avi", audio=false)
ConvertToYV12(matrix="PC.709")
LanczosResize(1280,800)

因为我使用Dxtory录制出来的FEZ游戏视频都是1440x900分辨率,属于标准的16:10画面,但YouTube上720p的视频分辨率是1280x720(16:9画面),所以这里我把1440x900的视频分辨率resize成接近YouTube 720p标准的1280x800(上面蓝色那句)。这里假设把生成的AVS脚本命名为『input.avs』。


x264编码器参数

既然是以高压为目的的,所以推荐使用 --preset veryslow,在其他参数相同的情况下,--preset veryslow 比 --preset slow 压制出来的视频体积上要小。

64bit x264编码器参数

avs4x264mod.exe --x264-binary "x264_64.exe" --profile high --tune animation --preset veryslow --bitrate 5000 --ref 3 --bframes 2 --rc-lookahead 250 --qcomp 0.5 --keyint 10 --min-keyint 1 --scenecut 60 --merange 32 --psy-rd 0.30:0.10 --colorprim bt709 --transfer bt709 --colormatrix bt709 --threads 0 --output "output.264" "input.avs"

说明一下上面的参数:

  • --ref 3
    设置可以使用多少帧作为参考帧(reference frames)。该值越大,压缩率越高,但压制速度损失很明显,而且对视频解压的要求也高。
  • --bframes 2
    设置在I帧和P帧之间最大并行B帧数。一般可以提高压缩率。YouTube要求为2。
  • --rc-lookahead 250
    设置mb-tree可用帧的数量。这里配合下面的--qcomp 0.5直接取最大值250。
  • --qcomp 0.5
    该值越小越能让mb-tree发挥更大作用。
  • --keyint 10
    YouTube要求值为帧速率的一半。
  • --scenecut 60
    设置额外插入IDR帧的参数。该值越大,会增加侦测到场景变更的数目。

注意:--rc-lookahead 250 参数需要消耗不少的内存,而32bit系统有每个进程2GB内存的限制,因此需要使用64bit系统和64bit的x264编码器,而且坊间一直流传64bit的x264编码器比32bit的快10%。


x264编码器超出内存上限提示


64bit系统则没有每线程2GB内存限制

等待x264编码器压缩完成后会得到一个『output.264』文件。一个时长25分钟的FEZ视频大小有800MB左右。


音频流部分

由于YouTube推荐的音频流编码为 AAC-LC,所以音频流的处理将使用 neroAacEnc.exe 编码并把比特率设为 384 kbps。

生成WavPack文件

由于 neroAacEnc.exe 只接受 WavPack 输入文件,所以需要先把导出的 Raw PCM 文件转换成 WavPack 格式,我使用 sox 这个工具。

sox.exe -e signed -r 48000 -b 16 -c 2 "input.raw" "wavpack.wav"

说明一下上面的参数:

  • -r 48000
    设置raw输入文件的采样率。
  • -b 16
    设置raw输入文件的位深。
  • -c 2
    设置raw输入文件的声道数量。
  • input.raw
    从Dxtory录制视频分离出来的 Raw PCM 音频文件。sox.exe的输入文件。
  • wavpack.wav
    生成的 WavPack 格式临时文件。sox.exe的输出文件。

这时得到一个『wavpack.wav』的WavPack文件。


生成AAC LC文件

把上一步得到的『wavpack.wav』文件作为 neroAacEnc.exe 编码器的输入文件。

neroAacEnc.exe -cbr 384000 -ignorelength -if "wavpack.wav" -of "output.m4a"

说明一下上面的参数:

  • -cbr 384000
    设置码率为CBR 384 kbps。
  • -if "wavpack.wav"
    上一步中生成的 WavPack 临时文件。neroAacEnc.exe的输入文件。
  • -of "output.m4a"
    生成的 AAC LC 音频文件。neroAacEnc.exe的输出文件。

得到一个『output.m4a』文件,这时可以把上一步生成的『wavpack.wav』文件删除了。

然后还需要把视频流和音频流放到容器里,这里推荐使用 MP4 Muxer,这也是YouTube推荐的容器格式。操作方面和上一篇文章提到的 MKV Muxer 基本一样,这里就不重复说明了。最后把成品视频『output.mp4』丢上YouTube即可。


YouTube上的视频

呃,围观就好了,请不要VIP我。 ≧﹏≦


本系列相关文章


(全文完)

2012年2月1日

FEZ游戏视频后期处理(高清篇)

前言

前一篇文章的视频后期处理部分,我直接用MediaCoder来简单的压缩视频,仔细看了那三张对比图,会发现压缩后的视频相对于原始视频,质量上的损失还是挺严重的,用来收藏的话还是有点不能接受。于是我放弃使用MediaCoder,转而使用x264的命令行方式来压缩视频,于是便有了这篇文章。

注意事项

  1. 我是使用64bit系统和64bit x264编码器的,但Dxtory 1.0.71的视频解码器只有32bit版本,因此需要将Dxtory录制的原视频pipe给64bit的x264编码器,所以64bit需要额外使用『avs4x264』这个工具,使用32bit系统的请无视。
  2. 本篇文章的目的是把压制出来的成品视频用于收藏,所以在画质与体积大小之间偏向于前者,有机会的话我会介绍如何压制出体积小的成品视频,但不能保证完美,毕竟这不是我所需要的。

需要软件与运行环境

我是分别处理原始视频的视频流和音频流,视频流用x264_10bit.exe编码成 xxx.264 文件,音频流用flac.exe编码成 xxx.flac 文件,最后用MKV Muxer将这两个文件合成为 xxx.mkv 文件。

文章修订记录

  1. 2012-02-11 00:38:22
    • modify:修改x264命令行参数,去除 --qpmin 0--qpmax 40
    • modify:把 --psy-rd 参数的值从 1:0.20 改为 0.60:0.10。
    • fix:修改错字。
  2. 2012-02-13 17:09:38

视频流部分

制作AVS脚本

什么是AVS脚本我就不说了,详细的可以Google之。生成AVS脚本的方法挺简单的,可以用MeGUI的『AVS Script Creator』;也可以直接将下面一行的内容粘贴到新的txt文件里,然后将txt后缀名改为avs。选择自己喜欢的方法即可。

AVISource("E:\FEzero_Client 2011-12-31 14-33-04-050.avi", audio=false)
ConvertToYV12(matrix="PC.709")

把上面红色部分改为自己视频的位置。

下文假设把生成的AVS脚本命名为『input.avs』。


x264编码器参数

因为我比较倾向使用x264预设的preset和tune系统,而且FEZ视频动态画面比重非常高,在x264里属于动态预测分析类的参数有--partitions, --direct, --me, --merange, --subme, --trellis,有经验的可以自己调教。我就直接使用--preset slow--tune animation--crf 16,如果不在意压缩时间或者CPU高能的话,推荐用 --preset veryslow。以下是我个人使用参数:

32bit x264编码器参数

x264.exe --profile high10 --tune animation --preset slow --crf 16 --deblock -2:-2 --keyint 300 --min-keyint 1 --merange 32 --subme 9 --psy-rd 0.60:0.10 --partitions all --colorprim bt709 --transfer bt709 --colormatrix bt709 --threads 0 --output "output.264" "input.avs"

64bit x264编码器参数

avs4x264mod.exe --x264-binary "x264_64.exe" --profile high10 --tune animation --preset slow --crf 16 --deblock -2:-2 --keyint 300 --min-keyint 1 --merange 32 --subme 9 --psy-rd 0.60:0.10 --partitions all --colorprim bt709 --transfer bt709 --colormatrix bt709 --threads 0 --output "output.264" "input.avs"

说明一下上面的参数:

  • --profile high10
    使用 10bit 位深。
  • --deblock -2:-2
    设置循环去区块滤镜,偏向负值能更好地保留细节性的东西,偏向正值则能使视频画面显得更为干净和柔和。
  • --keyint 300 与 --min-keyint 1
    设置最大和最少IDR帧(亦称为关键帧)间隔,IDR的存在对视频跳转有极大帮助,但IDR不参考其他帧注定压缩率不高,过多的IDR就会影响视频的压缩率。
  • --qpmin 0 与 --qpmax 40
    设置可以使用的最小量化值和最大量化值。量化值越小,编码后的视频品质就越接近编码前;量化值越大,品质越低。
  • --merange 32
    设置动态搜索的最大范围(单位是像素)。在 --preset slow(--me umh) 时,增加 --merange 数值会大幅减慢编码速度。
  • --psy-rd 0.60:0.10
    第一个数是Psy-RD的强度,第二个数是Psy-Trellis的强度。这是一种心理视觉模型算法,能提升细节。
  • --partitions all
    启用所有的宏区块分割。
  • --colorprim bt709,--transfer bt709和--colormatrix bt709
    设置以ITU-R BT.709规则进行RGB色彩转换。
  • --threads 0
    设置x264的线程数,0为自动。
  • --x264-binary "x264_64.exe"
    此为avs4x264mod.exe的选项,用于指定使用哪个64bit的x264编码器,不指定的话默认使用同目录下的x264_64.exe。

如果按照上面的参数跑一遍时长25分钟的FEZ视频,我的CPU需时大概8小时,我都是晚上睡觉前开始跑,一个晚上基本完工。注意 --output "output.264" 参数,请使用264作为输出文件的后缀名

等待x264编码器压缩视频,压缩完成后会得到一个『output.264』文件。


音频流部分

从AVI文件提出音频流

提取音频流需要用到『AVIMux_GUI』软件,该软件在 MeGUI 目录的 tools\avimux_gui\ 下,运行后按照下图操作。


导出成功后,得到一个raw后缀的音频流文件,这里取名为『input.raw』。注意,这里导出是否为raw文件取决与你Dxtory上的设置,如果 Dxtory 里的 Audio Setting 的 Audio Codec 处选择的是 “None” ,导出的即为raw文件。


使用flac.exe压缩音频流

下面是我的flac压缩参数:

flac.exe -8 --sample-rate=48000 --bps=16 --channels=2 --sign=signed --endian=little --force-raw-format "input.raw" -o "output.flac"

说明一下上面的参数:

  • -8
    使用 level-8 进行压缩
  • --sample-rate=48000
    设置采样率
  • --bps=16
    设置位深
  • --channels=2
    设置声道
  • --sign=signed
    具体作用不明(必要参数)
  • --endian=little
    具体作用不明(必要参数)
  • --force-raw-format
    设置输入文件为raw格式

等待flac编码完成后,得到一个『output.flac』文件。


把视频流和音频流装进容器

到目前为止,一共生成了两个文件,一个是『output.264』,一个是『output.flac』。还需要将这两个文件装进容器里,我选择的是 MKV Muxer 容器,而且 MeGUI 里还自带有GUI工具,可以直接拿来用。

MKV Muxer

打开 MeGUI ,按下 Ctrl+4 快捷键打开 MKV Muxer,或者按下图操作。

分别导入『output.264』和『output.flac』,然后点 Queue 添加到队列中,回到 MeGUI ,点 Queue 选项卡,点 Start 开始处理。



最后得到一个『output-muxed.mkv』文件,这便是成品。如果x264和flac都按照上面的参数编码,一个时长25分钟的FEZ原始视频能压缩到3GB左右,而且成品视频的画质已经非常接近原始视频,可以参考下面的对比图。


原始视频与压缩后视频对比图

图一


使用crf16参数压缩的视频截图(png格式


原始视频截图(png格式

图二


使用crf16参数压缩的视频截图(png格式


原始视频截图(png格式

图三


使用crf16参数压缩的视频截图(png格式


原始视频截图(png格式

题外:x264编码器进程优先级的问题

图形界面的MeGUI和MediaCoder都能设置x264编码器的进程优先级,但如果使用的是x264命令行方式的话,需要用到『Windows命令提示符』的 start 命令来预先设置x264以什么优先级运行,命令格式如下:

C:\>start "title" /b /wait /low x264.exe -o "output.264" "input.avs"

其中红字部分可以是以下参数

  • /low:低(最低优先级)
  • /belownormal:低于标准
  • /normal:普通(默认优先级)
  • /abovenormal:高于标准
  • /high:高
  • /realtime:实时(最高优先级,谨慎使用)

本系列相关文章


全文完