VCEEncを久しぶりに更新。もう5月のあたまぐらいからやっていたのだが、なんかいろいろあったのと、なんかうまく動かなくて嵌まって時間喰ったのと、後述の理由でやる気が出なかったのがあって、今頃になってしまった。なんか途中で飽きてCheckBitrateとかに手を出してしまう始末。
HWデコード、HWリサイズ、muxなどを追加したが…いろいろ微妙な結果になってしまった。
VCEEnc.auoのほうは特に更新はないけど、簡易インストーラを最新版に。
問題点はいくつかあるけど、致命的なのはインタレ保持エンコどころかインタレ解除もできなかったところ。VCEEncは、AMD Media SDKのamfという仕組みを使っているのだけど、どういうわけかAMD Media SDKではインタレ保持エンコもインタレ解除も使用することができない。DXVAではインタレ解除ができるはずなので、GPUにはそういう仕組みがあるはずなのだけど、AMD Media SDKでは無理、ということなのだろう。というわけで、tsとかには使えなさそうだ。
もうひとつ残念だったのは、HWデコードしたからと言って、そんなには速くならなかったこと(もちろん多少は速いけど)。
あとは、AMDはMedia SDKを更新する気はあるのかなあ…、というところが疑問なところ。最終更新は2015年1月…うーん。これ、やる気ないっすよね。
というわけで、QSVEncC/NVEncCにあるいろいろな機能を追加してあるけど、インタレ関連の機能をはじめとするいまのAMD Media SDKではサポートされていない機能や、実装にやたらと手間のかかる機能は実装してないし、Media SDKが更新されない限りする予定もない。
AMD Media SDKの制限により困難
・インタレ保持
・インタレ解除
・colormatrix, colorprim, transfer等
HWデコード時は使用不能
・--crop
実装予定なし
・--trim
・--avsync
mux時のみ利用可能
・SAR比の指定
一応動作確認は下みたいな感じの環境。
Win8.1 x64
4770K
Radeon R7 360
…これでWin10では動かないとか、言われてしまうと結構解決は難しかも。動くと信じたい。
というわけで、いろいろ中途半端な感じはあるけど、一応HWデコード→リサイズ→エンコードというのはできるようになったので、公開しておく。
まあ、QSVEnc/NVEncもわたし自身は実用性というよりは実験目的なんだけど、VCEEncはさらに実用性には乏しく、はっきりいって実験用途の域を出ないなあ、と思う。
VCEEnc ダウンロード>> ダウンロード (ミラー)>>
スポンサーサイト
更新ありがとうございます。
VCEEnc2.00のエンコードテストしてみました。
テスト環境
Win10x64 Intel Core i7-4770 AMD Radeon HD 7800
------------------------------------------------------------------------------------------------------------------------------
auo [info]: qaac (v2.59) で音声エンコードを行います。 CVBR (AAC) ビットレート指定, 128kbps
auo [info]: 音声エンコードディレイカット - 音声: -2112samples
auo [info]: ".\exe_files\qaac.exe" -q 2 --cvbr 128 --ignorelength -o "C:\Users\red\Documents\test_audio.m4a" "-"
qaac [info]: qaac 2.59, CoreAudioToolbox 7.9.8.3
qaac [info]:
qaac [info]: test_audio.m4a
qaac [info]: AAC-LC Encoder, CVBR 128kbps, Quality 96
qaac [info]: 1:35.009 (52.4x)
qaac [info]: 4560446/-1 samples processed in 0:01.812
qaac [info]: Overall bitrate: 129.831kbps
qaac [info]: Optimizing...done
auo [info]: qaac CPU使用率: 11.99%
qsv [info]: VCEEnc 2.00 (x86) / Windows 10 (x64)
qsv [info]: CPU: Intel Core i7-4770 @ 3.40GHz [TB: 3.90GHz] (4C/8T)
qsv [info]: GPU: AMD Radeon HD 7800 [Pitcairn 975MHz (2079.4 (VM))]
qsv [info]: Input Info: auo: yuy2->nv12[AVX2], 1920x1080p, 24000/1001 fps
qsv [info]: Output: H.264/AVC High @ Level 4.2
qsv [info]: 1920x1080p 23.976fps (24000/1001fps)
qsv [info]: Quality: slow
qsv [info]: CQP: I:21, P:23
qsv [info]: VBV Bufsize: 20000 kbps
qsv [info]: Bframes: 0 frames, b-pyramid: off
qsv [info]: Motion Est: Q-pel
qsv [info]: Slices: 1
qsv [info]: GOP Len: 60 frames
qsv [info]: Others: deblock hrd
auo [info]: VCE エンコード : 0時間 0分52.8秒
vce [info]:
vce [info]: encoded 2279 frames, 43.90 fps, 14465.86 kbps, 163.92 MB
qsv [info]: encode time 0:00:52, CPULoad: 18.82%
auo [info]: L-SMASH muxer (r1394) でmuxを行います。映像: on, 音声: on, tc:off, chap:off, 拡張モード:なし
auo [info]: ".\exe_files\muxer.exe" --file-format m4v -i "C:\Users\red\Documents\test.264"?fps=24000/1001 --file-format m4a -i "C:\Users\red\Documents\test_audio.m4a" --optimize-pd -o "C:\Users\red\Documents\test_muxout.mp4"
L-SMASH muxer [info]: iTunes MP4 muxing mode
L-SMASH muxer [info]: [H.264: Info]: IDR: 76, I: 0, P: 2203, B: 0, SI: 0, SP: 0, Unknown: 0
L-SMASH muxer [info]: Track 1: H.264 Advanced Video Coding
L-SMASH muxer [info]: Track 2: MPEG-4 Audio
L-SMASH muxer [info]: Muxing completed!
auo [info]: L-SMASH muxer CPU使用率: 12.44%
auo [info]: 総エンコード時間 : 0時間 0分59.3秒
設定はプロファイルの高画質からGOP長→ -1、Bフレーム→ 3に変更し、ピラミッド参照にチェックを入れています。
ログを見ると、Bフレームは 0、b-pyramidもoffになっており、設定が反映されていないかもしれません。
エラー無く終了したのでWin10x64でも一応エンコードはできるようです。
VCEやっぱり残念ですね
数年ぶりの新プロセス・新アーキテクチャなPolarisでの躍進に期待ですね
>red様
お使いのGPUがログにはAMD Radeon HD 7800とありますので、その世代ではBフレームに未対応だったと記憶しています。
Bフレームを設定しても"0"となってしまうのは、それが原因だと思われます。
>新プロセス・新アーキテクチャなPolaris
おっしゃるとおりPolarisでは動画関連も大きく拡張されるという噂ですので、あわせてAMD Media SDKの更新にも期待したいところです。
こちらの記事によるとPolarisからエンコーダーは改善されているようですね。
http://www.4gamer.net/games/329/G032949/20160629072/
あとはこのエンコーダーを利用できるソフトウェアライブラリを一刻も早くAMDが公開してくれることを祈るのみ。
おっしゃるとおりです。NVENCもVCEも今世代は期待できそうなので、早くSDKが公開されるとよいのですが。
AMF 1.3 SDKきましたよー
ああ、新しいSDK出たのですね。ざっと見ると、デコーダのほうはHEVC 8bit/10bit対応のようですが、エンコードpはHEVCはまだみたいです。
Polarisを買うにしてもRX460にするかRX470にするか迷います。正直もう少し待ちたいところですが…。
AMF 1.3 SDKではインタレ保持や解除、2パスでのエンコはできるようになったのですか?
タイトル通りの構成でVCEEncを使うと.NET系のエラーを吐いてエンコードできません
.NETのバージョンは4.6.2なんですが4.5.2とは微妙に互換性がとれてないんですかね…?
サブPCなんで化石レベルのスペックなんですがコメ欄の一番上の方はWin10でもエンコできてるようなんで.NETの問題ではなくハードの問題なんですかね…。
ちなみにAviUtl本体やその他のプラグインはすべて最新にアップデート済みです
ドライバーは16.7.3でVCEEnc設定画面のロゴはちゃんと赤くなってます
こちらでもWin10で動作しています。
「.NET系のエラー」とのことですが、具体的には、どういうエラーが出ているのでしょうか?
まずAviUtlのファイルメニューから拡張VCE出力を選択して出る画面でビデオ圧縮ボタンを押すと…
アプリケーションのコンポーネントで、ハンドルされいない例外が発生しました。[継続]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。
外部コンポーネントが例外をスローしました。
というエラーが出ます。
続行ボタンを押すことでVCEEncの設定画面を出すことはできますが、GUIの設定項目がすべて空の状態で開きます。各項目はプルダウンすれば普通に設定はできます。
設定が完了してOKで前の画面に戻り、保存ボタンを押すと…
アドレス"0x59c9dad1"で例"0xc00002b5"が発生しました
発生モジュール:atiumdva.dll
オフセットアドレス:0x0007dad1
備考:OUTPUT_PLUGIN_TABLE::func_output()[拡張VCE出力]
正常な動作が出来ない可能性がありますが処理を継続しますか?
と、またエラーが出て、ここで『はい』を押すと『ファイルの出力に失敗しました。』とメッセージが出て、そこで終了します。
いちばん最初のエラー画面で詳細ボタンを押したときのテキストはこんな感じです。
Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。
************** 例外テキスト **************
System.Runtime.InteropServices.SEHException (0x80004005): 外部コンポーネントが例外をスローしました。
場所 check_if_vce_available()
場所 VCEEnc.frmConfig.InitForm()
場所 VCEEnc.frmConfig.frmConfig_Load(Object sender, EventArgs e)
場所 System.Windows.Forms.Form.OnLoad(EventArgs e)
場所 System.Windows.Forms.Form.OnCreateControl()
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl()
場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
場所 System.Windows.Forms.Form.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** 読み込まれたアセンブリ **************
mscorlib
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1080.0 built by: NETFXREL3STAGE
コードベース:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
VCEEnc
アセンブリ バージョン:0.0.0.0
Win32 バージョン:2.00
コードベース:file:///C:/Tools/AviUtl/plugins/VCEEnc.auo
----------------------------------------
System.Windows.Forms
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1038.0 built by: NETFXREL2
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1081.0 built by: NETFXREL3STAGE
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1078.0 built by: NETFXREL3STAGE
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1038.0 built by: NETFXREL2
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1038.0 built by: NETFXREL2
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1064.2 built by: NETFXREL3STAGE
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
mscorlib.resources
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1038.0 built by: NETFXREL2
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ja_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
アセンブリ バージョン:4.0.0.0
Win32 バージョン:4.6.1038.0 built by: NETFXREL2
コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピューター (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。
例:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
ハンドルされていない例外はすべてコンピューターに登録された
JIT デバッガーに設定されなければなりません。
情報ありがとうございます。エラーの原因ですが、VCE関連のコードのようで、.NET自体は関係なさそうです。すこしいろいろ調べてみます。
当方まったく急いでいませんので、お時間があるときにでもゆっくりとやっていただければと思います。
ご面倒かとは思いますが、調査よろしくお願いします。
そう言えばPolarisではAVCやHEVCの2パスエンコにハードウェアで対応してましたね。どの程度使い物になるのか気になりますが、対応予定はしばらくないですか?
いずれやろうとは思っているのですが、なかなか。やはりモチベーション的な問題でQSV/NVENC中心に作業してしまいがちです。
OS:Windows 10 x64
CPU:AMD A4-1200
Memory:2GB
の環境で試してみます。
気づきがあれば、再度投稿予定です。
今後ともよろしくお願いいたします。
取り敢えずAVCの2パスエンコは出来そうですか?
2passエンコードはサポートされていないようです。大きな機能追加はなさそうなので、当面更新する予定はありません。
OBS Studio のAMF(AMD-Advanced-Media-Framework) plug-in のIssue に突如登場しているのでご報告。
github.com/Xaymar/OBS-AMD-Advanced-Media-Framework/issues/119
作者様直々に適切な情報を返答したほうがいいのだろうな、と思いましたのでこちらにコメントしておきます。
情報ありがとうございます。
ただ、どうも他の方が「VCEEncは開発が進んでいない」ようなことをすでにコメントしてくださっているので十分かなと思っています。
うーん、AMDは、OpenCLに力を注ぐみたいだから、こっちは開発進まない感じにみえてきました
でHEVCエンコが出来るようになりましたね