[QSVって] QSVをいじった結果… [ほんと微妙]

QuickSyncVideoで遊んでみよう、というお話。

以前、P67なんて、要るわけないでビットレート指定で1passとかちょっと…とか、速度がうんぬん、みたいなことを言ってたわけだけど、言いっ放しってのもあれなので、Intel Media SDK をダウンロードして、中のsample_encode.exeというのを弄繰り回してみた。で、なんかできたので成果物をあげとく。

sample_encodeを使うとyuv(YV12) raw がH.264/AVC ES(raw)になって出てくる。

あとはmp4boxとかでmp4に格納してやれば、普通に再生できる。

そんで、いろいろサンプルコードをいじってると、実はサンプルコードにちょっと追加するだけでいろんな設定ができる、ってのが分かったのでパラメータを変えながら色々遊んでみたが…

まあ、速いんだけどね、画質がね。微妙なのさ。うん。
画質を保とうとするとだいぶ膨らむし。

やっぱりx264はすごい。

で、微妙なんだけども、速いことは確かで、なんかできてしまったのであげとく。

Sandy持ってたら、暇な時に遊んでみてください。



拡張 QSV 出力 (QSVEnc.auo) + QSVEncC.exe



拡張QSV出力(QSVEnc) は、Intel Media SDK を使用してエンコードを行うAviutlの出力プラグインです。

ほんとは、拡張Intel Media SDK出力とかのほうが名前としては正しいのですが、長ったらしく、あまり好きになれなかったので、名称として多少不正確ですが、拡張 QSV 出力にしました。

IntelMediaSDKのsample_encode.exeを改造し、x264guiEx 1.xxに突っ込みました。QuickSyncVideoによるハードウェア高速エンコードができます。画質(および圧縮率)には期待しないでください。

QSVEncC は、おまけのQSVEncのコマンドライン版です。
入力としては raw と YUV4MPEG2(y4m) に対応しています。
基本的にパイプを使うことを想定しています。
使い方としては、

avs2pipemod.exe -y4mp "{avsファイル名}.avs" | QSVEncC.exe [オプションとか] --y4m -i - -o "{rawファイル名}.264"

ffmpeg -v 0 -i "{ソース動画ファイル}" -pix_fmt yuv420p -an -vcodec rawvideo -f yuv4mpegpipe - | QSVEncC.exe [オプションとか] --y4m -i - -o "{rawファイル名}.264"

みたいな感じになります。
出てくるのはH.264/AVC ESなのでmp4boxとかmkvmergeでmp4なりmkvなりにしてやってください。
fpsと(必要なら)parの指定が必要です。
例えば29.97fps,par=4:3ならこんな感じ。

mp4box.exe -add "{rawファイル名}.264"#video:fps=30000-1001:par=4:3 -add "{音声ファイルパス}"#audio -new "{出力ファイル名}.mp4"

mp4boxはファイル名に"#"とか"%"がなぜか使えない仕様なので注意してください。

むろんQSVEnc.auoは一時ファイル名でこいつらを全角に置換するので問題ないです。



なにができるのさ?



・QSVによる高速H.264/AVCエンコード

・高速化(一番下にベンチ結果を置いといた)
YUY2をNV12に変換しながらIntel Media SDK側のフレームバッファに直接叩きこむ。

・CQP(固定量子化量)モード
これがやりたかった。1passビットレート指定だと、出来上がりの画質が予想できないので。

・アス比指定
mux時に反映。アス比指定がないと1440x1080を16:9表示できない。(個人的には)重要。

・GOP長の指定

・連続Bフレーム数の指定

・Intel Media SDK VPP (Intel GPUを使用した簡易高速フィルタリング)




基本動作環境



Windows Vista,7 (x86/x64)
Aviutl 0.99g4 以降
SSE2の搭載されたCPU

※ソフトウェアエンコードはXPでも動くかもしれないらしいけども、
 Intelとしては動作保証はないらしいです。



QuickSyncVideo(ハードウェアエンコード)動作環境



基本動作環境に加え、
QuickSyncVideoの有効なCPUと対応したマザーボード
まあなんのこっちゃって言うと具体的には
・Core ix 2xxx と H61, H67, Z68 チップセットの載ったマザーボード
・内蔵GPUをプライマリにする
などですが、他にも色々条件があるかもなので頑張ってください。
注意点としては
・WinXP非対応
・SandyBridgeでもPentiumとかCeleronとかはQSV無効らしい。
・P67はダメ
・Z68だとVirtuなんとかってのをオンにするらしい
・リモートデスクトップ中はダメ(これにはまった)
・Windows Home Server とかもダメっぽいです。(持ってないのでわからんけども)
WHS用のIntelグラフィックスドライバが対応してない…模様。

【検証環境】
Win7 x64
Aviutl 0.99j
Core i5 2500 + H61
4GB RAM
Intel Graphics Driver 8.15.10.2361
Intel Graphics Driver 8.15.10.2509 両方動作確認



QSVEnc 使用にあたっての注意事項



無保証です。自己責任で使用してください。
QSVEncを使用したことによる、いかなる損害・トラブルについても責任を負いません。
つまり、こんなのってないよっていう状況に陥っても知りません。





QSVEnc 使用方法



x264guiExと大して変わりません。

Aviutl.exeと同じフォルダ、またはプラグインフォルダに
auoフォルダのなかに入っている
QSVEnc.auo、QSVEnc.ini、QSVEnc_stgフォルダ
の3つを放り込んでください。
また、Aviutl.exeと同じフォルダにlibmfxsw32.dllを放り込んでください。


また、以下のものが必要なので、
インストールしてください。
インストールされてれば必要ないです。

Aviutlが32bitアプリで、QSVEncも32bitです。
なので64bitOSであっても32bit版(x86版)が必要です

VC++ 2008 SP1 再頒布可能パッケージ (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=a5c84275-3b97-4ab7-a40d-3802b2af5fc2&displayLang=ja

Win Vista/7には.NET Framework 2.0はインストール済みなので、問題無いですね。



さらに以下のものが必要になるのでとりあえず集めてください。
ダウンロード先の例を書いておきます。
探せばこのほかにも見つかるものもあります。



neroaacenc (aacエンコーダ)
http://www.nero.com/jpn/technologies-aac-codec.html

mp4box (mp4 muxer, mp4作成時に必要)
http://pop.4-bit.jp/(POP氏)

mkvmerge (mkv muxer, mkv作成時に必要)
http://www.bunkus.org/videotools/mkvtoolnix/


その他あるといいかもしれないもの

qtaacenc (aacエンコーダ)
http://tmkk.pv.land.to/qtaacenc/ (要QuickTimeインストール)

lame (mp3 エンコーダ)
http://www.rarewares.org/mp3-lame-bundle.php

FAW+fawcl (FakeAACWave, aacを無劣化移行)
http://2sen.dip.jp/cgi-bin/friioup/upload.cgi?search=FakeAacWav&sstart=0001&send=9999

ext_bs (PVシリーズaac抽出)
http://www.sakurachan.org/soft/mediatools/

ffmpeg (as AC3 encoder)
http://blog.k-tai-douga.com/

oggenc2 (Ogg Vorbis, mkv用)
http://www.rarewares.org/ogg-oggenc.php




QSVEncの確認

Aviutlを起動して、その他 > 出力プラグイン情報 から QSVEnc.auo が認識されているか確かめます。

認識されていない場合、
VC++ 2008 SP1 再頒布可能パッケージ (x86) のインストールを忘れている or インストールに失敗している などが考えられます。



拡張 QSV 出力の設定画面を開き、
・使用する音声エンコーダの場所
・使用するmuxerの場所
を指定し、

その他の設定をして、
OK をクリックして、設定画面を閉じる
出力ファイル名を指定して、保存 -> エンコード開始。







いじってみてわかったQSVEnc(というよりIntel Media SDK)によるエンコードの注意点



バグ
QSV(ハードウェアエンコ)でインタレ保持エンコを使用すると、なぜかフレーム数が倍になっておかしなことになります。これはソフトウェアエンコだと問題ないので、ドライバかなんかのバグっぽいです。(Intelに報告しといた -> おお、バグじゃね?という返事が来た…)

よくわからんIntelMediaSDKの仕様っぽいもの

- 品質 fast は H.264/AVC Baseline Profileのようです。

- ハードウェアエンコ(QSV)

固定長GOPにチェックを入れなくても、固定長GOPになります。そんなもんらしいです。というかシーンチェンジ検出のさせ方がわからん。どうもvppを使うようなのだが…
参照距離は2までしか行きません。

- ソフトウェアエンコ

GOP長、参照距離、Bフレーム数のどれかを自動にしておくと、なぜかIDRフレームが先頭の一枚しか入らないので、シークが困難な(というかできない)動画が出来上がります。なのでソフトエンコ使用時は必ずGOP長、参照距離、Bフレーム数を自動にせず、手動で指定してください。

ソフトウェアエンコならx264のほうが断然いいのでどうでもいいですが。

- ほかにもいろいろ謎なわけがわからないよ的挙動がある模様。調べきれていない。

mp4box
- mp4boxのバージョンによってはmuxが止まります。(mp4boxがraw importでこけます)理由はよくわからんのですが、とにかく最近のmp4boxを指定して、一度短い動画でチェックしてみてください。




その他




ハードウェアエンコにチェックを入れられないんだが…

QSVが使用不可だとそうなります。ハードウェアエンコの使用条件を確認してみてください。

vppてなに

Intel Media SDKでのフィルタリングです。x264の--vfみたいなもんです。Aviutlから受け取ったフレームに対してさらにリサイズなどフィルタをかけることができます。これらのVPP処理はIntelのGPUで処理され、それがQSVエンコーダに渡されるため、高速に動作します。が、処理品質は微妙なようです。
・リサイズ
・ノイズ除去
・インタレ解除(通常版、IT版(逆テレシネ))
・DetailEnhancer(ディテール・輪郭強調、unsharpっぽい?)

エンコ速度
以前、P67なんて、要るわけないでも書きましたが、QSVの処理能力にはまだまだ余裕がある状態です。なので、エンコ速度はデコードやフィルタリングの速度に左右されます。デコードやフィルタリングをなるべく軽くすることで、QSVの実力を発揮させてやることができます。

正直、QSVに画質は期待できないので、あまりフィルタとかかけず、ばんばんエンコさせてやるのに向いていると思います。





結局使えるの?




…あんま使えません。

高速化・CQPなど機能を増やしたのはいいんですが、やはり画質が厳しい(x264と比較すると)。アニメだと輪郭周りが気になって気になって以下略。

もちろん、かなり高速なので、その点はいいかなと。

個人的にはアニメは高画質であって欲しいので、今後もx264(時間かかるけど縮むので10bit)ですが、たまにエンコする実写の画質はあまり気にしてないので、実写をぱぱっと処理するのに使うかなあ…という感じ。




QSVEncC(おまけ)




sample_encodeはyuv rawファイルしか読めませんでした。
さすがに「そんなのってないよ」って感じで、ちょっと残念だったので、パイプ入力とYUV4mpeg2に対応させてQSVEncのコマンドライン版として作ってみました。コマンドラインの例は上に書いたような感じです。あとはQSVEncC -hとかからコマンドライン一覧を見てください。

avsを直接食えるようにする気はありません。




QSVEnc ダウンロード>>




以前の記事P67なんて、要るわけないと同条件での結果。151fps出てる。
QSVEnc01

動作中のスクリーンショット。右側のMFX(QSV回路のことっぽい)の使用率がそこそこ高いことがわかる。(16%でも高いと言える)
QSVEnc03
スポンサーサイト



コメントの投稿

非公開コメント

No title

DVD FlickでISO イメージファイル生成したんですが、やっぱり動画に虹色の映像が映ります。
x264で出力(GUI)した、MP4ファイルは、問題ないんですが、x264guiExで出力した、MP4ファイルは不具合がでるので、原因はなんでしょうか。

最初の一分ぐらいと、最後の一分ぐらいに、虹色の映像が映ります。

No title

よくわからんけど、
 ・使ったx264はどこのサイトのどのrevisionのどのbit-depth?
 ・x264guiExのバージョンは?
 ・x264やx264guiExの設定は?
 ・使ったMP4Boxは?
とかの詳しい情報がなければ原因を特定しようがないような。
そもそも「x264で出力(GUI)」ってなんのことなんだろう。

虹色ノイズについて

上の方の仰るとおり、状況が良くつかめません。
x264やx264guiExのバージョンは特に重要です。またx264guiExのログもあると原因の特定につながるかもしれません。

そもそもDVD Flickは、動画プレーヤーではないのでなぜDVD Flickが出てくるのかよくわかりません…x264guiExで出力した動画をプレイヤーでそのまま再生しても虹色ノイズというのは出るという理解で良いのでしょうか。

このへんからは推測になります。
「x264で出力(GUI)」というのはx264guiExになる前の私の改造版x264guiか、あるいはseraphy氏のx264guiかと思いますが…それだとうまくいって、x264guiEx 1.xxだと上手くいかない場合、パソコンの動画環境が古いのかもしれません。動画プレイヤーやスプリッター、デコーダ、あるいはDVD Flickなどを最新のものに更新するなども必要かもしれません。

No title

AviUtl拡張x264出力(GUI)の事ですけど、分からないですかね。言葉足らずでしたかね。
http://www.geocities.jp/o94_4/mp4enc.html
このサイトを参考にして、拡張 x264 出力(GUI) Exで、MP4に変換しましたけど、不具合がでます。Windows Media Playerでは映像は、見れますが、それ以外のプレイヤーでは、映像に不具合がでます。

拡張x264出力(GUI)で、MP4に変換するので、正直もう良いですわ。不具合がでる拡張 x264 出力(GUI)Exは、使いません。それもエンコードも遅いですしね。拡張x264出力(GUI)のほうが、エンコードも速いですから。

No title

>AviUtl拡張x264出力(GUI)の事ですけど、分からないですかね。言葉足らずでしたかね。

うん。わからないね。
何しろ AviUtl拡張x264出力(GUI) (x264gui.auo) は俺も改造して公開していたからね。
x264gui.auoは自分を含めて三人(オリジナルのseprahy氏版、seraphyが更新を中断して暫く独自にパッチあてて公開してた俺(VFR maniac版)と、俺もseraphy氏も更新止めたあとのrigaya氏版)のヤツがあるんだよ。
しかもlibx264(x264エンコーダの本体)と合体しているから、revison毎にビルドしなきゃならず、「x264gui.auoを使用して不具合が出るんですけど->まず使っているrevを言え」 状態になるんですけどね。
またこれとは別のAviUtl出力実験室のx264出力(mp4/mkv)プラグインってのもあってね。
更に、x264guiExが採用しているlibx264と分離してプロセスする元ネタとなるヤツが存在しましてね。
まぁ、要するにそこら辺の事情を知っている人からすれば、君の愚痴は言葉足らずにしか見えないわけですよ。
「一体、何と戦っているんだ」的な。

>Windows Media Playerでは映像は、見れますが、それ以外のプレイヤーでは、映像に不具合がでます。
うん。別にWindows Media PlayerがMP4を再生しているわけじゃないんだよね。
Windows Media Playerが使っているMP4スプリッタ及びH.264/AVCデコーダが再生しているんだよね。
(Windows 7だとMicrosoft DTV-DVD Video Decoderっていうのがデコードに使われてるが、MP4のスプリッタはMediaFoundation内でしか使えない模様。この場合、他のプレイヤーでは別途スプリッタの導入が必要。)
だから同じスプリッタ, デコーダを再生時に使用できればその他のプレイヤーでも再生できるはずなんだよね。
だから、それだけの情報だと、俺には<<<君の>>>再生環境の問題に見える。

>それもエンコードも遅いですしね。拡張x264出力(GUI)のほうが、エンコードも速いですから。
それは君の設定の問題じゃないの?
使用しているlibx264のrevisionが変わればデフォルト値も変わるし、内部挙動も変わる。
それを加味して言ってるの?それを言及せずして、遅いだのなんだの、君の言っていることはただの誹謗中傷にしかならないよ。

で、君が示した情報の範囲での俺の判断は、「x264guiExで出力されたMP4は正常に出力されている。たまたま他のプレイヤーの使ったスプリッタ/デコーダが壊れてただけじゃない」的なモノ。
(まぁ、MP4はx264guiExが作っているわけじゃないけどぉ > x264側のmp4出力モジュール or MP4Box)
もう一度、自分の環境見直してみたら?
バグっているMP4Boxを掴んじまったのがヲチだったりするかもしれないし。

No title

avisynth 64bit マルチスレッド版 + QSVEncCで、
160fps実現できました。
ソースファイルは1280x720 約4GB 約45分 mp4ファイルです
同等のことをx264(コマンドライン,現時点で最新版)で行うと50~60fpsなので素晴らしいです。

公開して頂き感謝感激です・・!

Intel Media SDK 2012

Intel Media SDKの新しいものででたようですね。
バグが治っていたら、そちらでもビルドをしてみていただけると助かります

Re: Intel Media SDK 2012

今作っているv0.03ができたら、次はSDK2012を試してみようと思っていました。バグ…治ってるといいんですがね…。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先: rigaya34589@live.jp
github twitter

最新記事
最新コメント
カテゴリ
月別アーカイブ
カウンター
検索フォーム
いろいろ
公開中のAviutlプラグインとかのダウンロード

○Aviutl 出力プラグイン
x264guiEx 3.xx
- x264を使用したH264出力
- x264guiExの導入紹介動画>
- x264guiExの導入
- x264guiExのエラーと対処方法>
- x264.exeはこちら>

x265guiEx
- x265を使用したH.265/HEVC出力
- x265guiExの導入>
- x265.exeはこちら>

QSVEnc + QSVEncC
- QuickSyncVideoによるHWエンコード
- QSVEnc 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC
- NVIDIAのNVEncによるHWエンコード
- NVEnc 導入/使用方法>
- NVEncCオプション一覧>

VCEEnc + VCEEncC
- AMDのVCE/VCNによるHWエンコード
- VCEEnc 導入/使用方法>
- VCEEncCオプション一覧>

svtAV1guiEx
- SVT-AV1によるAV1出力
- svtAV1guiExの導入>
- SVT-AV1単体はこちら>

VVenCguiEx
- VVenCによるVVC出力
- VVenCguiExの導入>

ffmpegOut
- ffmpegを使用した出力
- ffmpegOutの導入>


○Aviutl フィルタプラグイン
自動フィールドシフト (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: aji様

clcufilters 
- OpenCL/CUDAのGPUフィルタ集
- 対応フィルタの一覧等はこちら

エッジレベル調整MT (ミラー)
- エッジレベル調整の並列化/高速化
- SSE2~AVX512対応
- オリジナル: まじぽか太郎様

バンディング低減MT (ミラー)
- SSE2~AVX512による高速化版
- オリジナル: まじぽか太郎様

PMD_MT
- SSE2~AVX512による高速化版
- オリジナル: スレ48≫989氏

透過性ロゴ (ミラー)
- SSE2~FMA3によるSIMD版
- オリジナル: MakKi氏

AviutlColor (ミラー)
- BT.2020nc向け色変換プラグイン
- BT.709/BT.601向けも同梱

○その他
Amatsukaze改造版
- AmatsukazeのAV1対応版

tsreplace
- tsの映像のみを置き換えて圧縮

rkmppenc
- Rockchip系SoCのhwエンコーダ

fawutil
- FAW(FakeAACWave)⇔aac変換
- 二重音声の取り扱いにも対応

x264afs (ミラー)
- x264のafs対応版

aui_indexer (ミラー使い方>)
- lsmashinput.aui/m2v.auiの
 インデックス事前・一括生成

auc_export (ミラー使い方>)
- Aviutl Controlの
 エクスポートプラグイン版
 エクスポートをコマンドから

aup_reseter (ミラー)
- aupプロジェクトファイルの
 終了フラグを一括リセット

CheckBitrate (ミラー, 使い方, ソース)
- ビットレート分布の分析(HEVC対応)

チャプター変換 (使い方>)
- nero/appleチャプター形式変換

エッジレベル調整 (avisynth)
- Avisynth用エッジレベル調整

メモリ・キャッシュ速度測定
- スレッド数を変えて測定
- これまでの測定結果はこちら

○ビルドしたものとか
L-SMASH (ミラー)
x264 (ミラー)
x265 (ミラー)
SVT-AV1 (ミラー)

○その他
サンプル動画
その他

○読みもの (ミラー)
Aviutl/x264guiExの色変換
動画関連ダウンロードリンク集
簡易インストーラの概要

○更新停止・公開終了
改造版x264gui
x264guiEx 0.xx
RSSリンクの表示
リンク
QRコード
QR