fc2ブログ

PREV | PAGE-SELECT | NEXT

≫ EDIT

Aviutl+QSVでエンコードしてみる(core i7 3770+Z77)

新しくintelPCを組んだので録画したアニメをAviutl+QSVEncでエンコードしようと思います。

QSV(Quick Sync Video)
 
QSVはSandy bridge以降のintelCPUの回路に組み込まれたハードウェア・エンコーダです。
メリットとしてはCPUの負荷の低下、消費電力の減少、専用回路による高速化です。
徹底検証 Quick Sync Video

QSVEncCとavisynthでもやってみました。
QSVEncC+avisynthで高速自動エンコードする その1 Firefoxは情弱のたしなみ

さらにPowerShellで自動CMカットを行うスクリプトをかきました。
【CLIEnc4TS】PowerShell + QSVEncCで自動エンコード/自動CMカット part1

スポンサーリンク



QSV動作要件
 
まずはQSVEnc使用可能の条件を確認でぇす!
Windows Vista,7 (x86/x64)
Aviutl 0.99g4 以降
Core ix 2xxx(PentiumやCeleronはほぼ無効?)
SSE2の搭載されたCPU
H61,H67,Z68,Z77などのチップセットの乗ったマザーボード
内蔵GPUをプライマリにする(BIOS操作)
WinXP非対応
最近のミドルクラスのPCなら大体大丈夫なんじゃないでしょうか。
実はQSVは外付けGPUでなく、オンボードビデオを使う必要があるという変な条件があります。
それを回避し外付けGPUでも使用可能なのが「Virtu MVP」で対応しているのが上のチップセットなのです。


必要なもの
 
次に必要なソフトなどのリンク先です。
AviUtl 定番。これで編集したりします。0.99g4以降!
Microsoft .NET Framework 3.5 (日本語化) x264を動かす為の必須コンポーネント。win7は必要なし?
Microsoft Visual C++ 2008 SP1  (x86) x264を動かす為の必須コンポーネント
Virtu MVP 対応のマザボであればドライバCDに付属していると思います。
QSVEnc(rigayaの日記兼メモ帳) QSVを使うためのaviutlプラグイン
DirectShow File Reader MPEG2系ファイル(DVDなど)をAviUtlで読み込めるようにする
MPEG-2 VIDEO VFAPI Plug-In 読み込み後なぜか終了してしまうのでDriectShowを使っています
MP4Box 映像と音声の合成に必要

基本的に上記のものを揃えれば良いかと思います。neroとかいらないの?と思う人がいると思いますが、
QSVEncに[QSVEnc]、[NeroaacEnc]、[L-SMASH]を自動ダウンロード、インストールするインストーラがあります。
QSVEncの説明書をよく読みましょう。基本的にプラグインはaviutl.exeと同じディレクトリに入れればいいです。
あと以前まとめた記事も見ておいてください。→ aviutlの導入について(x264)
ちなみにMP4Boxの代わりにL-SMASHがデフォルトに採用されているみたいです。


QSVなどの導入
 
1.Virtu MVP

Virtu MVPの設定は簡単です。
1.[Main]タブにて"GPU Virtualization"をONにする
2.[Applications]タブにて"Add"からAviutlの登録、"Work in I-mode"にします
自分は一応再起動しましたが、別に必要は無さそうです。

2.Aviutl
.NETとかはインストールして、aviutlが入ったフォルダはCドライブに置きましょう。
QSVEnc_readme.txtを熟読して、auo_setup.exeを実行し、上でおいたaviutlフォルダを指定しインストールします。
最後にx264.exeやMPEG-2入力プラグインもaviutl.exeと同じディレクトリに入れておしまいです。

なお出力した映像・音声ファイルをMP4に格納する為にL-SMASHがインストールされましたが、
MP4Boxのほうが安定してるらしいので自分はこっちを使います。(L-SMASHだと音声がおかしくなる?)
L-SMASHとMP4Boxどちらでも問題ないと思いますが、MP4Boxを使う場合は、
解凍したQSVEncの中にmp4box用"QSVEnc.ini"があるのでaviutl.exeと同じディレクトリに置き、指定します。

Aviutlを起動して、[その他]-[出力プラグイン情報]から"拡張 QSV 出力"とあればおk、なければどこかが間違っています。

3.拡張QSV出力の設定
早速エンコードしたいので、拡張 QSV 出力の設定をしましょう。(とは言ってもほとんどすることはないですが…)
まずなにかTSファイルを読み込み、
[ファイル]-[プラグイン出力]-[拡張 QSV 出力]を選択、[ビデオ圧縮]で設定ウィンドウを開きます。


・設定ポイント
1.[ハードウェアエンコード(QuickSyncVideo)]と[ビデオメモリモード(QSV使用時推奨)]にチェックがあること確認
2.[NeroAacEnc.exeの指定]からディレクトリ指定を行う
3.[mp4]タブで[外部muxerを使用]にチェック
4.[remuxer.exe]、[timelineeditor.exe]、[muxer.exe]それぞれのディレクトリ指定を行う(mp4boxでも良い)
もし1が駄目なら、Virtu MVPがONになっていないか、BIOSで内蔵GPUが有効になっていないとかだと思います。

最低上の設定だけで良いかと思います。動画設定は調べるの面倒なのでデフォルトのままです。
QSVEncの作者さんによると、1PASSエンコードのQSVの場合はCQPが良いみたいです。
rigayaの日記兼メモ帳 [QSVって] QSVをいじった結果… [ほんと微妙]

ただアスペクト比は設定しておいたほうが良いかと思います。地デジは大抵1440x1080で放送され、
16:9ではなくそのままエンコすると駄目なので、SARを4:3に指定しましょう。これで出力ファイルは16:9になります。

エンコードする
これでもうQSVでエンコードできるのでやってみます。比較用にCUDAと拡張x264出力も。
■環境
CPU : intel Core i7 3770 (Ivy Bridge,3.4GHz)
MB : ASRock Z77 Extreme6
MEM : 16GB (8GB x2)
VGA : N660GTX Twin Frozr III OC (GeForce GTX 660,GDDR5/2048MB)
OS : Windows7 SP1 64bit

エンコードするファイル。MurdocCutでOPをカットしたものです。


出力ファイルのキャプチャ
オリジナル(143MB) 拡張QSV出力(21.4秒、CPU:40%程度、106MB)
拡張x264出力(3分25.8秒、CPU:99~100%、140MB) CUDA(31秒、CPU:20%程度、106MB)

基本的に今はTS保持派で画質・速度優先なので、元の半分以下かつ1GB以下であればいいかなと思ってます。
解像度はオリジナル、aviutlで行ったQSVとx264はフィルタなし、インターレース解除なしです。
CUDAはFreemake Video Converterを使っていて、リサイズとインターレース解除は行われてる模様。
ふと思ったらソースサイズ143MB!QSVとCUDAでもあまり小さくなっていないし、x264はほぼ変化なし。
多分OPはよく動くので品質固定だとあまり小さくできなかったのかも?ビットレート高すぎて、比較の意味があるのか・・・

拡張QSV出力
auo [info]: converting YUY2 -> NV12p, using SSE2
qsv [info]: based on Intel(R) Media SDK Encoding Sample Version 3.5.915.45327
qsv [info]: Input Frame Format    NV12
qsv [info]: Output Video          H.264/AVC  High @ Level 4
qsv [info]:                       1440x1080p 4:3 29.970fps (2997/100fps)
qsv [info]: Encode Mode           Constant QP (CQP)
qsv [info]: CQP Value             I:24  P:26  B:27
qsv [info]: Target usage          balanced
qsv [info]: Ref frames            2 frames
qsv [info]: Bframe Settings       3 frames
qsv [info]: GOP Length            300 frames
qsv [info]: Memory type           d3d9
qsv [info]: Input Buffer Size     4 frames
qsv [info]: Intel iGPU ID         1st GPU
qsv [info]: Media SDK impl        QuickSyncVideo (hardware encoder), API v1.4
qsv [info]: encoded 2704 frames, 152.66 fps, 9728.53 kbps
qsv [info]: frame type IDR    10
qsv [info]: frame type I      10
qsv [info]: frame type P      676
qsv [info]: frame type B      2018
auo [info]: QuickSyncVideoエンコード : 0時間 0分17.8秒
auo [info]: NeroAacEnc で音声エンコードを行います。 AAC-LC ビットレート指定, 192kbps
auo [info]: mp4box でmuxを行います。映像: on, 音声: on, tc:off, 拡張モード:なし
auo [info]: 総エンコード時間   : 0時間 0分21.4秒

CUDA(Freemake Video Converterの為詳細な設定はありません。)
フレームサイズ:オリジナル
ビデオコーデック:H.264
フレームレート:オリジナル
ビットレートカスタム:9760kbps
インターレース解除:あり

拡張x264出力
auo [info]: arguments passed...
  --preset medium --crf 24 --qcomp 1 --qpmin 10 --qpmax 51 --qpstep 41 --bframes 5 --me umh --subme
9 --merange 64 --sar 4:3  --input-res 1440x1080 --input-csp yv12 --frames 2704 --fps 29970/1000 -o
raw [info]: 1440x1080p 4:3 @ 2997/100 fps (cfr)
x264 [info]: using SAR=4/3
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
x264 [info]: profile High, level 4.0
x264 [info]: frame I:91    Avg QP:19.29  size:135465
x264 [info]: frame P:1668  Avg QP:20.42  size: 49525
x264 [info]: frame B:945   Avg QP:22.21  size: 13979
x264 [info]: consecutive B-frames: 42.0% 31.5% 12.9%  7.4%  4.3%  2.0%
x264 [info]: mb I  I16..4: 29.1% 51.3% 19.6%
x264 [info]: mb P  I16..4:  9.6% 15.5%  5.0%  P16..4: 36.4%  9.5%  5.6%  0.0%  0.0%    skip:18.4%
x264 [info]: mb B  I16..4:  0.9%  1.0%  0.4%  B16..8: 37.7%  3.2%  0.8%  direct: 4.8%  skip:51.3%  L0:45.5% L1:51.6% BI: 2.9%
x264 [info]: 8x8 transform intra:51.2% inter:79.6%
x264 [info]: coded y,uvDC,uvAC intra: 50.9% 68.0% 40.3% inter: 15.6% 25.7% 4.3%
x264 [info]: i16 v,h,dc,p: 40% 38% 15%  7%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 12% 33%  5%  5%  7%  5%  7%  7%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 50%  9%  5%  5%  6%  5%  5%  5%
x264 [info]: i8c dc,h,v,p: 31% 38% 24%  8%
x264 [info]: Weighted P-Frames: Y:4.6% UV:3.8%
x264 [info]: ref P L0: 57.0%  6.8% 20.7% 15.3%  0.2%
x264 [info]: ref B L0: 73.9% 22.5%  3.6%
x264 [info]: ref B L1: 90.8%  9.2%
x264 [info]: kb/s:9589.05
encoded 2704 frames, 13.39 fps, 9589.11 kb/s
drop 0 frames
auo [info]: x264エンコード時間 :  0時間 3分22.0秒
auo [info]: 音声エンコーダ neroAacEnc.exe で音声をエンコードします。
auo [info]: MP4Box.exe でmuxを開始します。音声用コマンド:2, afs用タイムコード:0, 拡張コマンド:0
auo [info]: 総エンコード時間   :  0時間 3分25.8秒


今度は1話まるごとエンコードしてみます。


上のと変わらないので画像はなし
オリジナル 2.39GB
拡張QSV出力(オリジナル) 893MB、8分18.4秒、CPU:40%程度
拡張QSV出力(1280x720) 434MB、7分49.6秒、CPU:40%程度
CUDA 896MB、8分3秒、CPU:20%程度
拡張x264出力 932MB、27分34.0秒、CPU:99~100%
同じく解像度はオリジナルのまま、aviutlで行ったQSVとx264はフィルタなし、インターレース解除なしです。
上だと9000超えのビットレートが全体だと4000程度に減っています。
これだけファイルサイズが大きければ当たり前かもしれないですけど、あまり画質が悪いなとは感じないです。
このクオリティを8分でエンコできるのはやっぱ速いのかなと。
ついでにやったQSVの1280x720はIntel Media SDKの映像フィルタでリサイズしたものです。

今回の目的ではないですが、GTX660にしたおかげかCUDAもQSVと同等の速さです。
CUDAはQSVと比べると若干ぼやけていますが大きな違いではない感じです。

x264はやはりほぼ再生時間と同じで遅いです。またCPUがMAXなので並行作業はきびしい感じです。
設定の問題で、さすがにもう少し速くなるんじゃなかとも思っているんですが・・・
拡張QSV出力
auo [info]: converting YUY2 -> NV12p, using SSE2
qsv [info]: based on Intel(R) Media SDK Encoding Sample Version 3.5.915.45327
qsv [info]: Input Frame Format    NV12
qsv [info]: Output Video          H.264/AVC  High @ Level 4
qsv [info]:                       1440x1080p 4:3 29.970fps (2997/100fps)
qsv [info]: Encode Mode           Constant QP (CQP)
qsv [info]: CQP Value             I:24  P:26  B:27
qsv [info]: Target usage          balanced
qsv [info]: Ref frames            2 frames
qsv [info]: Bframe Settings       3 frames
qsv [info]: GOP Length            300 frames
qsv [info]: Memory type           d3d9
qsv [info]: Input Buffer Size     4 frames
qsv [info]: Intel iGPU ID         1st GPU
qsv [info]: Media SDK impl        QuickSyncVideo (hardware encoder), API v1.4
qsv [info]: encoded 53914 frames, 121.86 fps, 3970.77 kbps
qsv [info]: frame type IDR    180
qsv [info]: frame type I      180
qsv [info]: frame type P      13479
qsv [info]: frame type B      40255
auo [info]: QuickSyncVideoエンコード : 0時間 7分22.5秒
auo [info]: NeroAacEnc で音声エンコードを行います。 AAC-LC ビットレート指定, 192kbps
auo [info]: L-SMASH   muxer でmuxを行います。映像: on, 音声:off, tc:off, 拡張モード:なし
auo [info]: L-SMASH remuxer でmuxを行います。映像: on, 音声: on, tc:off, 拡張モード:なし
auo [info]: 総エンコード時間   : 0時間 8分18.4秒

CUDA(Freemake Video Converterの為詳細な設定はありません。)
フレームサイズ:オリジナル
ビデオコーデック:H.264
フレームレート:オリジナル
ビットレートカスタム:3970kbps
インターレース解除:あり

拡張x264出力
auo [info]: arguments passed...
  --preset medium --bitrate 3970 --pass 1 --slow-firstpass --stats ".\x264.stats" --sar 4:3  
--input-res 1440x1080 --input-csp yv12 --frames 53914 --fps 29970/1000 -o
raw [info]: 1440x1080p 4:3 @ 2997/100 fps (cfr)
x264 [info]: using SAR=4/3
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
x264 [info]: profile High, level 4.0
x264 [info]: frame I:768   Avg QP:19.72  size: 96966
x264 [info]: frame P:21488 Avg QP:21.57  size: 28527
x264 [info]: frame B:31658 Avg QP:21.38  size:  7181
x264 [info]: consecutive B-frames: 14.8% 16.9% 11.8% 56.5%
x264 [info]: mb I  I16..4: 26.7% 62.0% 11.3%
x264 [info]: mb P  I16..4:  7.0% 10.8%  2.2%  P16..4: 36.2%  9.1%  6.3%  0.0%  0.0%    skip:28.4%
x264 [info]: mb B  I16..4:  0.4%  0.6%  0.1%  B16..8: 30.6%  2.2%  0.3%  direct: 4.8%  skip:61.1%  L0:47.4% L1:50.2% BI: 2.4%
x264 [info]: final ratefactor: 21.57
x264 [info]: 8x8 transform intra:55.3% inter:84.7%
x264 [info]: coded y,uvDC,uvAC intra: 44.9% 62.2% 28.0% inter: 11.1% 20.1% 1.4%
x264 [info]: i16 v,h,dc,p: 42% 37% 10% 12%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 17% 41%  3%  3%  3%  2%  4%  3%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 55% 12%  3%  3%  4%  2%  3%  2%
x264 [info]: i8c dc,h,v,p: 45% 26% 24%  5%
x264 [info]: Weighted P-Frames: Y:3.4% UV:2.3%
x264 [info]: ref P L0: 55.7%  8.2% 23.4% 12.6%  0.1%
x264 [info]: ref B L0: 71.1% 23.6%  5.3%
x264 [info]: ref B L1: 88.7% 11.3%
x264 [info]: kb/s:4068.12
encoded 53914 frames, 33.55 fps, 4068.12 kb/s
drop 0 frames
auo [info]: x264エンコード時間 :  0時間26分46.7秒
auo [info]: 音声エンコーダ neroAacEnc.exe で音声をエンコードします。
auo [info]: MP4Box.exe でmuxを開始します。音声用コマンド:2, afs用タイムコード:0, 拡張コマンド:0
auo [info]: 総エンコード時間   :  0時間27分34.0秒

おわりに

 
QSVを試してみた感想としてはかなり使えそうと思いました。
自分みたいにあまり容量気にしないで、速くサイズを小さくしたい人にはよさそうな感じです。
CUDAも十分使えますが若干ぼやけているのと、設定があまり細かくできない所は惜しいのかなと思います。

ただ、原因はわからないのですがQSVでおかしな所があり、音声が時たま震えるように聞こえたり、
結構大きなノイズが入ります。入らない時は最後までないのですが、あると全体的にその用な感じになります。
リサイズするとノイズが入るような気がします。オリジナルサイズだと問題ないっぽいです。

円安の影響なのかCPUやメモリが値上がりしていてこれ以上高くなるのは嫌だったので組んでしまいましたが、
4月に発売予定の新マイクロアーキテクチャ「haswell」のCPUだと、Ivy Bridgeよりもさらに高速になるみたいです。

とまぁ、こんな感じでおわりです。それではまた~
関連記事
スポンサーリンク

| エンコード | 21:39 | comments:2 | trackbacks:0 | TOP↑

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

| | 2013/12/01 00:47 | |

Re: タイトルなし

遅ればせながら、AVIUTLでTSを読み込めない質問に対しての回答です。

aviutlでtsを読み込むにはプラグインを追加する必要があります。
いくつかありますが、http://higitune.blog106.fc2.com/blog-entry-93.html
の記事では『DirectShow File Reader』を使用しています。

プラグイン導入方法の説明が有りました。
tsを優先して読み込みたいので、『DirectShow File Reader』を一番上に持って行きましょう。
http://chidejicopy.crap.jp/edit/aviutl.html

>TSファイルからd2vファイルに分離してそれをAVIUTLで読み込ませる
うーん、自分はaviutlにそのままts読ませてエンコードできてたと思います。aviutlとは別個の、
Avisynt+QSVでの自動エンコードでは、工程上、TSをd2vとaacに分離してエンコードしています。

| 如月 | 2013/12/11 01:02 | URL |















非公開コメント

http://higitune.blog106.fc2.com/tb.php/93-7c8c6794

PREV | PAGE-SELECT | NEXT