English change log and binaries>>[NVEncC]- --vpp-colorspace hdr2sdrでcolormatrix,transfer,colorprimの変換を指定した際には、指定に基づいた変換を行うように。いただいた要望の反映。
- 音声デコーダの初期化時にsample fmtが設定されない場合にエラーが発生する問題を回避。ご指摘のあった問題の修正。
- AVPacket関連の非推奨関数の使用を削減。
[NVEnc.auo]- デフォルトの音声ビットレートを変更。- プリセットの音声ビットレートを変更。- exe_filesから実行ファイルを検出できない場合、plugins\exe_filesを検索するように。- エンコード終了ログの文字化け対策。
※NVEnc 6.00から導入方法が変更されていますのでご注意ください。※Aviutl向けには、Aviutl_NVEnc_6.xx.zip をダウンロードしてください。ダウンロード>>NVEncの導入NVEncCのオプションについてはこちら。
NVEncCオプション一覧>
いつもお世話になってます。
表題の件ですが6.04以降も再発しています。
ついでにQSVEncも7.02以降同様の文字化けしています。
申し訳ありませんが、NVEnc 6.06 および QSVEnc 7.07で設定画面やログ画面を選択ランを含め確認しましたが、文字化けは確認できませんでした。
YUVの動画にvpp-colorspaceのlut3d使用する際、
ログに
cspconv(nv12 -> yuv444(16bit))
matrix:bt709->GBR
のように表示されますが、この場合16bitでlut3dの計算がされてますでしょうか?
-> yuv444(16bit)の部分を見ると16bitと思われますが、
ffmpegのpix_fmtsではgbrpが8bitなので、念のためお伺いしたい次第です
この場合、yuv444(16bit)が中間データの精度で16bit、lut3dの内部処理自体は32bit単精度小数です。
状況に応じ、yuv444が中間データになることもありますが、この場合は中間データが8bit、lut3dの内部処理自体は同じく32bit単精度小数です。
32bit単精度小数を用いる理由は、一般にGPUでは単精度小数の処理が高速であるためです。
ご返答ありがとうございます。納得しました
こんにちは、いつもお世話になってます。
NVEncCで動画を処理してる最中に、yuv444(16bit)やyv12(16bit)になったデータをh264・h265にエンコードせず、
yuv4mpegpipeのような形でパイプ出力することは可能でしょうか?
やりたいことのイメージは
NVEncC -i 入力動画 --vpp-convolution3d -f yuv4mpegpipe -o - | NVEncC --y4m -i - --vpp-colorspace lut3d="hoge.cube" -c hevc --profile main10 -o 出力動画
のように、NVEncCを(フィルター順を変える等の目的の為)つなげたいので、データのロスなく2番目のNVEncCに渡したいのですが、
現状だと上記コマンドではERRORとなる上、Output Infoを見るとH.264に変換しようとしているように見受けられます。
losslessを用いた↓のコマンドだと
NVEncC -i 入力動画 --vpp-convolution3d -c hevc --profile main10 --lossless -o - | NVEncC -i - --vpp-colorspace lut3d="hoge.cube" -c hevc --profile main10 -o 出力動画
1番目のvpp-convolution3dでyuv444(16bit)となったデータが、H.265のYUV444 10bitに丸められて渡されます。
変則的な利用方法で申し訳ないですが、マルチGPU環境でNVEncCを走らせるデバイスを別々のに変えたりする用途にも使えるので、現状できないなら対応いただけるとありがたいなぁ、という所存です
NVEncCでは、 -f yuv4mpegpipe のような、NVENCでエンコードしないような使い方には対応していません。そのため、エラーとなるのは想定される動作です。
NVEncCは「最終段階がエンコーダであること」を前提として組んでいるので、エンコードしないように変更するのはちょっと大変で時間がかかりそうです。
また、QSVEnc拡張やNVEncプラグイン側の英語化対応などほかに要望のある項目・実施予定の項目もあり、すみませんがすぐに対応はできない状況ですが、後ほど対応したいと思います。
ずいぶんと遅くなってしまいましたが、パイプ渡し(y4m)をNVEnc 7.07で実装しました。
https://rigaya34589.blog.fc2.com/blog-entry-1612.html"-c raw"でy4m出力できるようにしたつもりです。
ちょっと時間が空きすぐてしまいましたが、もしまだ見てくださっていればお試しください。
ご対応ありがとうございます。
早速試させて頂きましたが、どうも-c rawを指定すると、下記の①②のように入力動画の形式に関わらずyuv420pで出力してしまい、その為かnv12(yv12)でVpp Filterの計算を行っているようです。
(以前のhevcロスレス10bitを指定するやり方だと③④のようになっていました)
①テストコマンド
FFmpeg -hide_banner -t 30 -f lavfi -i color=c=black:s=1920x1080 -pix_fmt yuv444p16le -strict -1 -f yuv4mpegpipe - | NVEncC -i - --vpp-convolution3d -c raw -o - | FFmpeg -y -i pipe: -hide_banner test.mp4
①ログ
Input Info avsw: rawvideo(yuv444(16bit))->nv12 [AVX2], 1920x1080, 25/1 fps
Vpp Filters copyHtoD
cspconv(nv12 -> yv12)
convolution3d: matrix standard, mode normal
threshold spatial luma 3, chroma 4, temporal luma 3, chroma 4
cspconv(yv12 -> nv12)
copyDtoH
②テストコマンド
FFmpeg -hide_banner -t 30 -f lavfi -i color=c=black:s=1920x1080 -pix_fmt yuv420p10le -strict -1 -f yuv4mpegpipe - | NVEncC -i - --vpp-convolution3d -c raw -o - | FFmpeg -y -i pipe: -hide_banner test.mp4
②ログ
Input Info avsw: rawvideo(yv12(10bit))->nv12 [AVX2], 1920x1080, 25/1 fps
Vpp Filters copyHtoD
cspconv(nv12 -> yv12)
convolution3d: matrix standard, mode normal
threshold spatial luma 3, chroma 4, temporal luma 3, chroma 4
cspconv(yv12 -> nv12)
copyDtoH
③テストコマンド
FFmpeg -hide_banner -t 30 -f lavfi -i color=c=black:s=1920x1080 -pix_fmt yuv444p16le -strict -1 -f yuv4mpegpipe - | NVEncC -i - --vpp-convolution3d -c hevc --output-depth 10 --lossless -o - | FFmpeg -y -i pipe: -hide_banner test.mp4
③ログ
Input Info avsw: rawvideo(yuv444(16bit))->yuv444(16bit) [AVX2], 1920x1080, 25/1 fps
Vpp Filters copyHtoD
convolution3d: matrix standard, mode normal
threshold spatial luma 3, chroma 4, temporal luma 3, chroma 4
copyDtoD
④テストコマンド
FFmpeg -hide_banner -t 30 -f lavfi -i color=c=black:s=1920x1080 -pix_fmt yuv420p10le -strict -1 -f yuv4mpegpipe - | NVEncC -i - --vpp-convolution3d -c hevc --output-depth 10 --lossless -o - | FFmpeg -y -i pipe: -hide_banner test.mp4
④ログ
Input Info avsw: rawvideo(yv12(10bit))->p010 [AVX2], 1920x1080, 25/1 fps
Vpp Filters copyHtoD
cspconv(p010 -> yv12(16bit))
convolution3d: matrix standard, mode normal
threshold spatial luma 3, chroma 4, temporal luma 3, chroma 4
cspconv(yv12(16bit) -> p010)
-c rawが動作してよかったです。なお、yuv420専用になっておりますので、ご指摘の通りの動作となります。
ただ、大変申し訳ないですが、残念ながらあまり所望の動作のお役に立てそうにないのかなという認識です。
実装してみて改めて思いましたが、やはり当初の予定に全くない機能のため、かなり無理のある実装になってしまっています。お役に立てそうにないのであれば今後の維持の負担の非常に大きい本機能は廃止にしようかなと思っています。
最初に正確に要望をお伝えしきれず、申し訳ありませんでした。
貴重なお時間を取らせてしまい、すみません m(__)m
せっかく実装して頂いたのになんですが、維持に負担がかかるなら廃止でよろしいかと…
いえ、こちらこそお待たせしたうえ力不足で大変申し訳ありませんでした。
次の7.08ではすみませんが機能としては削除させていただきました。