画像やリンクが無効になっている可能性もあるのでご了承下さい。
今日になって「あ!!」と思ってやったら出来たことなんだけども、x264 では「x264.exe が 64bit なら Avisynth も 64bit でなくてはいけない」のは周知の事実。これが固定観念として残ったまま Avisynth + x265.exe をしていたわけで、両者 32bit のままエンコードをしていた。
しかし、x265 は入力側として avs を読み込んで Avisynth を叩けないので、avs4x265.exe 等のツールを用いるかコマンドラインでパイプ経由で x265.exe にフィルタをかましたフレームを引き渡す必要がある。x265.exe はエンコードをするフレームさえ受けとれば良いので「x265.exe が 32bit でも 64bit でも」問わずに動く。と言う事に。
x265.exe が 64bit であるメリットはエンコード速度が速くなると言う一言に尽きる。なので、積極的に使って行きたいところだが、上記の x264 でエンコードを行うときの固定観念から Avisynth 64bit のプレビューが行えるソフトを探してみたり、手探りで使って見たりと随分無駄な労力を割いてしまった。
これが x265.exe のバイナリを 64bit 版に入れ替えるだけで普通に動いていたから、32bit 版の時よりも 2~3fps 高速にエンコードを行うことが出来るようになりましたと言うお話し。
改めて思い込みって怖いな~と思ったorz でも気付いて良かった……
エンコード速度の参考として 34,523 フレームのエンコードを行って fps を比較した結果……
AVS ファイル → avs4x265.exe → x265.exe x86 = 17.38fps
AVS ファイル → avs4x265.exe → x265.exe x64 = 20.17fps
この様に +2.79fps 速くエンコードが完了し、エンコード時間も約 275 秒短くなった。SSIM は変わらず、成果物のファイルサイズも同一だからデメリットも無い。
* 2015/04/04 15:10 追記
avs4x26x というユーティリティがあり、avs4x265 と同等以上の事が出来る。引数も大体同じなので avs4x26x を用いた方が良いだろうと思われる。
以下 avs4x26x の Usage の一部をペタリ
avs4x26x - simple AviSynth pipe tool for x262/x264/x265
Version: 0.10.0.71, built on Sep 15 2014, 14:23:43
Usage: avs4x26x [avs4x26x options] [x26x options] -o <output> <input>
Supported input formats:
.avs
.d2v: requires DGDecode.dll
.dga: requires DGAVCDecode.dll
.dgi: requires DGAVCDecodeDI.dll, DGDecodeNV.dll or DGDecodeIM.dll accordin
g to dgi file
.vpy: try to use VSImport -> AVISource -> HBVFWSource
(VSImport requires VapourSource.dll)
(HBVFWSource requires HBVFWSource.dll, and will force input-depth=16)
.avi: try to use AVISource -> LWLibavVideoSource -> FFVideoSource(normal)
-> DSS2 -> DirectShowSource
.mp4/.m4v/.mov/.3gp/.3g2/.qt:
try to use LSMASHVideoSource -> LWLibavVideoSource
-> FFVideoSource(normal) -> DSS2 -> DirectShowSource
.m2ts/.mpeg/.vob/.m2v/.mpg/.ogm/.ogv/.ts/.tp/.ps:
try to use LWLibavVideoSource
-> FFVideoSource(demuxer="lavf" and seekmode=-1)
-> DSS2 -> DirectShowSource
seek-mode will be forced to "safe" for these formats if ffms is used
.mkv/.flv/.webm:
try to use LWLibavVideoSource -> FFVideoSource(normal) -> DSS2
-> DirectShowSource
.rmvb/.divx/.wmv/.wmp/.asf/.rm/.wm:
try to use DSS2 -> DirectShowSource
(FFVideoSource, LWLibavVideoSource, LSMASHVideoSource, DSS2, DirectShowSour
ce
requires ffms2.dll, LSMASHSource.dll, avss.dll, DirectShowSource.dll)
Options:
-L, --x26x-binary <file> User defined x26x binary path.
Default: "x265" if output file is *.h265/.265/.h
evc
otherwise "x264_64"
-L オプションで指定したバイナリを用いて H.264 or HEVC エンコードが出来る。
使い方としては
avs4x26x.exe -L /path/to/x265.exe --crf 20 --preset medium -o output.265 input.avs
なんて感じにしてやると良いだけなので簡単。
コメント
はじめまして、こんにちは!!
Avisynth x264でエンコードしたくて2日程格闘してましたら、ここに辿り着きました。
私のしたかったエンコ方法だったのでとても助かりました。
ありがとうございました。
はじめましてー! コメントありがとうございます。
avs4x26x ってソフト自体結構古い物ですが、個人的には未だこれがベストな物です。