English edition of change log いくつかの微妙な調整と、簡易インストーラの更新。
[NVEnc.auo / NVEncC共通] ・ログにいくつかのパラメータを追加。
[NVEnc.auo] ・プリセットを現状に合わせて調整。 ・簡易インストーラを更新。 [NVEncC] ・NVEncC側に存在していなかったいくつかのオプションを追加。 (--direct, --adapt-transform)
・NVENCのpresetを反映するオプションを追加。 (--preset)
・H.264ではLTRが非対応であるとのことをhelpに明記。
※同梱のdll類も更新してください! ダウンロード>> ダウンロード (ミラー) >> OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。 ソースはこちら>>
スポンサーサイト
更新ありがとうございます
いつも使わせてもらってます
NVEncのH.265/HEVCを使ってエンコードした動画をYouTubeなどにアップしようとすると処理に入ったとたんにサポートされていない形式と表示されます。また、Windows Media Playerで再生しようとしてもエラーを吐きます。Aviutlやほかのプレイヤーだと再生、読み込みできるのですが・・・
これは仕様なのでしょうか?
GPU:GTX980Ti
CPU:i7-6700k
NVEnc.auo / NVEncC の両方でHEVCエンコ(CQPデフォルト)を行い、wmpで確認してみましたが、特に問題なく再生できました。youtubeのほうはすみません、ちょっと上げたことがないのでわかりません。
NVEnc 3.07 (x86)
Win10 x64 / wmp12 バージョン 12.0.14393.953
GeForce GTX 1060 6GB (10 EU) @ 1708 MHz (378.66)
可能性としては、
・NVEncの特定のオプションの問題
・Maxwell (GTX9xx)の問題
・wmpのバージョンの問題
などが考えられます。
問題が発生した際にお使いだったNVEncのオプションなど教えていただけますでしょうか?
Windows 10 x64、Core i7 2600K、メモリ16GB、GeForce GTX 1060 3GBの環境です。
AviSynth+ x64からNVEncC64.exeに渡して使用しています。
※AviSynthでは試していません。
29.97fps及び59.94fpsの読み込みは成功するのですが、TIVTC24P2関数を用いて1080i 29.97fps → 1080p 23.976fpsにした結果を読み込むと、何の表示もなくNVEncC64.exeが強制終了します。
一つづつフィルタを切って試しましたが、TIVTC24P2の処理を行った際のみ強制終了し、再現率は100%です。
なおこの問題は、ffmpegで読み込みy4mでパイプ渡しすると再現せず、正常に動作します。
原因がわかりますでしょうか。
TIVTC24P2というのは存じ上げませんが、OpenCLを使用しているようなものなのでしょうか?
以前、同一プロセスにOpenCLがあるとうまく動作しないということがあったかと思います。CUDAと干渉しているのかもしれませんが、原因はよくわかっていません。ご指摘のように、y4m渡しに変更し、プロセスを分けてしまうのが無難な解決策かと思われます。
ご回答いただきありがとうございます。
TIVTC24P2はフィルタやプラグインなどではなく関数名です。
ユーザー関数ではありますが、逆テレシネの処理を「よろしくやってくれる」便利な関数として広く利用されているものです。
内容は下記の通りで、TDeint、nnedi3、TFM、TDecimateを組み合わせて処理しています。
function TIVTC24P2(clip clip){
Deinted=clip.TDeint(order=-1,field=-1,edeint=clip.nnedi3(field=-1))
clip = clip.TFM(mode=6,order=-1,PP=7,slow=2,mChroma=true,clip2=Deinted)
clip = clip.TDecimate(mode=1)
return clip
}
関数内でGPUフィルタを使用しておらず、スクリプト内の他部分でも使用しておりませんので、OpenCLやCUDAとの干渉はないかと思います。
特にGPUフィルタなどではないということ、承知しました。
うーん、なにが原因なのでしょうか…。正直に言って、Avisynth周りには疎いので、なにが起こっているのかよくわかりません。
…とりあえず、Avisynth+をインストールして、4つのフィルタを集めるところからやってみます…。
お時間をとらせてしまい申し訳ありません。
自ブログで恐縮ではありますが、AviSynth+ x64や使用フィルタにつきましては以下にまとめてあります。環境再現の参考になりましたら幸いです。
https://blacknd.com/video-editing/avisynth-plus-64bit-mt-filters-plugins-install-windows10-x64/
再現テスト中のスクリプトでは、余分を省き以下の処理のみ行っています。
・LSMASHSourceで1080i 30fpsソースの映像・音声読み込み
・AssumeTFF()
・TIVTC24P2()
なおffmpegには渡すことができるとお伝えしましたが、一応x264やx265にも問題なく渡して処理できることを付け加えておきます。
試した限りではNVEncCのみが強制終了します。
横からですが、
・症状が再現する最低限のスクリプトの全文
・使っているプラグインのバージョン
・使っているAvisynth+のバージョン
・出力に使っているツールの名称とバージョン
これをすべて書き出さないと解決が難しいかもしれません
例えば、特定のプラグインのバージョンでないと動かなかったりするからです
ユーザー定義関数のTIVTC24P2()にしても、中身の関数を別の関数に置き換えたりしてTIVTC24P2内部のどの関数がアウトなのか調べるといいと思います
それとSetLogParams()でログを取ってあげると原因が分かるかもしれません
私の記憶が定かでないんですが、nnedi3は派生版が多くAvisynth+やAvisynth2.6用に作られたバージョンもあったはずですし、TDecimateもAvisynth+ MTでは動作がやや怪しかった気もします
あ、大丈夫です。頂いた情報で、
・TIVTC24P2()を使うと強制終了
・TIVTC24P2()を外すと問題なく動作
というところまで再現できました。最近のAvisynth+はあんな導入の仕方するんですね。もう最近はAviutl一辺倒で全然使っていなかったので勉強になりました。
これから修正可能かどうか調べてみます。
エラーの発生箇所を調査したところ、avsファイルを開き初期化する際に、TIVTC.dllの中で例外で落ちていました。
例外の原因はアライメントの取れていないアドレスに対しアライメントが取れているものとしてアクセスしていることです。このメモリに関しては、NVEncC64のほうで確保したものではなく、Avisynth側(あるいはTIVTC.dll)のどこかで確保したはずのものです。
おっしゃるようにx264から同じavsファイルを開いた場合には問題なく動作するのですが、エラー発生箇所までのAvisynthの呼び出し手順もx264とNVEncC64で変わらないようなので、原因がよくわからない状態です。
32bitのほうは問題なく動作するのですが…。
> 通りすがり様
バージョンやより細かい環境について表記すべきだったと今更ながら反省しています。
TDecimateはMTモードだと不安定か、mode=3だとおそらく動作しないという話がありますので#3(MT_SERIALIZED)に指定していますが、そのことにも触れていません。
失礼いたしました。
> rigaya様
検証いただきありがとうございます。
原因は不明とのことで、いずれ何かのきっかけで動作するよう期待しつつ、当面はffmpegからy4m渡しで使用します。
貴重なお時間を割いていただきありがとうございました。
横から失礼します。
NVEncは使用していないのですが、当方がAdobe premiere Pro CCでH265を使用して書き出した動画を、youtubeにアップロードした際も同じことになりました。
手持ちのプレイヤーでは普通に再生できます。
aviutlやNVEncの問題ではなくh265かyoutube側の問題ではないでしょうか?
環境は
win10
GeForce GTX1070
i7-4790k
です
そもそもYouTubeはHEVCサポートしていませんから、上げることはできないでしょう。
参考:
https://productforums.google.com/forum/#!topic/youtube/Tki7pPbOUWY
https://support.google.com/youtube/answer/1722171
WMPに関して、Windows 8.1またはそれ以前のバージョンでサードパーティーDirectShow Filterが入っていない場合、それは仕様です(HEVCサポートされていません)。Windows 10(build 10240以降)でもHWAccelでない限り、WMPでの再生ができません。yukiさんの場合はこれを該当、GTX980Ti(GM200)ではHEVCエンコードできますが、デコードはできません。
(また、私見ですがNVENCではH.264/AVCのほうが優れている気が…)
返信遅くなってしまい申し訳ないです
オプションは
出力形式:H.265/HEVC
モード:VBR - 可変ビットレート
ビットレート:5000
最大ビットレート:17500
出力ビット深度:8bit
プロファイル:main
レベル:auto
最大CUサイズ:32
最小CUサイズ:8
GOP長:0
Bフレーム数:0
参照距離:3
VBVバッファサイズ:0
Loolahead depth:32
適応的量子化:both
AQ strengyh:0
videoformat:undef
fullrange:オフ
アスペクト比
SAR(PAR,画素比)で指定
0:0
色設定
全てundef
音声
エンコーダ:NeroAacEnc
処理順:同時
FAWCheck:オフ
モード
2pass:オフ
パイプ処理:オン
ディレイカット:補正なし
AAC-LCビットレート指定 128Kbps
以上が設定になります
そうなんですか、知りませんでした。
ご回答ありがとうございます
Youtubeの公式による推奨エンコード設定は以下の通りです。
https://support.google.com/youtube/answer/1722171
8Kは書いてないですけど
推奨エンコード設定は120Mbs~150Mbpsかなーと予測。
8K@60fps動画 (HTML 5プレーヤーに対応している必要あり。
また、VP9コーデックでしか8Kの60fpsはアップロードできません)
https://www.youtube.com/watch?v=xFLHWJhAAr4
現時点ではAviutl上からの場合、65535kbpsを超えるビットレートを指定してエンコードすることはできません。
要望
ビットレート指定を無制限に
moov Atomブロックの先頭配置サポート
>yuki様
教えていただいた設定で試しましたが、wmpでの再生はこちらでは問題なさそうでした。もしかするとMaxwell特有の問題かもしれず、お役に立てそうにありません。
youtubeアップロード目的でしたらH.264を使用するのが無難かと思います。
>RRX様
>>moov Atomブロックの先頭配置
NVEnc.iniの
"[SETTING_MUXER_MP4_RAW]"
の行の下にある
base_cmd="%{ex_cmd} %{vd_cmd} %{au_cmd} -o "%{muxout}" "
に--optimize-pdを追加してください。
base_cmd="%{ex_cmd} %{vd_cmd} %{au_cmd} --optimize-pd -o "%{muxout}" "
よろしくお願いします。
>
--optimize-pd
を追加してください。
ありがとうございました
CPU Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz
グラフィックカード Quadro K2200
ドライババージョン 340.52
OS win7(64bit)
quadroではNVEnc出力は不可能でしょうか?
出力設定画面にて、ロゴも光らず
そのまま実行すると
nvenc [error]: nvEncodeAPIのインスタンス作成に失敗しました。ドライバのバージョンが古い可能性があります。
nvenc [error]: 最新のドライバに更新して試してみてください。
と出てしまいます。
ドライバーは最新で
NVEncも3.07を使用してます
Quadro K2200はMaxwell GM107なので、NVENCは使用可能なはずです。
問題はやはりドライバのバージョンかと思います。大変失礼ながら、340.52は最新ではないかと存じます。
こちらのページ(
http://www.nvidia.co.jp/Download/index.aspx?lang=jp )にQuadro向けに377.11が公開されていますので、お試しいただけないでしょうか?
よろしくお願いします。
いつもお世話になっています。今回、こちらのZIPファイルの方をダウンロードさせていただいたところ、difenderにてauo_setupの中にTrojan:Win32/Rundas.Bが検出されたので報告しておきます。
報告ありがとうございます。
ただ、残念ながらわりとよく判定されてしまうようなので、報告いただかなくて大丈夫です。