主にWindows11対応関連の更新。
・想定動作環境にWindows11を追加。・Windows11の検出を追加。・Windows11のWSL2での実行に対応。こちらの記事で実際の使用方法とかを紹介。
・スレッドアフィニティを指定するオプションを追加。(--thread-affinity)
Alderlakeに向けてPerformanceコアでの実行、Efficiencyコアでの実行を指定可能としたつもり。もちろん、実機未発売のため、未検証なのでとりあえず仕組みを作って準備しているという感じ。
実機が手に入ったら意図通り動くか実際に試してみたい。
・ログの各行に時刻を表示するオプションを追加(デバッグ用)。(--log-opt addtime)
ダウンロード>>ダウンロード (ミラー) >>NVEncCのオプションについてはこちら。
NVEncCオプション一覧>ソースはこちら>>
スポンサーサイト
こんにちは
いつもありがたく使わせてもらっています
静止画連番のエンコードに利用させてもらおうとして、
FFmpeg -framerate %FPS% -i "%%08d.png" -pix_fmt yuv444p -f yuv4mpegpipe - | NVEncC --y4m -i ~
↑のようなFFmpegからのパイプ渡しや
AvisynthのImageReader(avs読込)でやろうとしたのですが、
FFmpegだとエンコ結果の動画が途中止まったり
(エンコの度に止まる箇所が違う。長時間の動画ほど止まる確率が上がる)、
ImageReaderだと静止画読み込み速度がFFmpegの1/3程度で遅く、
引数のFPSに60000/1001のような除数で指定しても、
NVEncCだと59/1となったりと色々上手く行きません。。
つきましてはNVEncCの方で静止画連番の読み込みに
対応して頂ければ、と思い、お願い申し上げる次第です。
よろしければご検討の程、お願い致します。
連投失礼ですが、別件で不具合?のようなものを見つけたので
報告させて頂きます。
YUV444(10bit / 12bit)の4K動画を
HEVC(10bit)にエンコードした際、
画面左上の端っこ15x2ドットほどの緑色の横線が発生します。
NVEncC --avsw -i "YUV444の4K動画" -c hevc --profile main10 -o "output.mkv"
InputがYUV444(8bit)でも2Kでも発生せず、
OutputがHEVC(8bit)でも発生しないようです。
また、FFmpegで似たようなことをやっても発生しないので、
NVEncの不具合でもなさそうです。
FFmpeg -y -i "YUV444の4K動画" -pix_fmt p010le -c:v hevc_nvenc -profile main10 "output.mkv"
Inputのサンプル動画はこちらに置いておきました。
ttps://22.gigafile.nu/1021-e999640bc5dc15b9738770771e369d632
または↓のコマンドでもサンプル動画を作成できます。
FFmpeg -y -i "適当な4K動画" -pix_fmt yuv444p16le -c:v hevc_nvenc "YUV444の4K動画.mkv"
--使用環境--
OS:Windows 10 x64 (19043)
ドライバ:472.12
GPU:1660s
NVEncC:5.40(x64)
> 静止画連番の読み込み
NVEncC --avsw -i "%%08d.png" ~ で対応しているかと思いますので、まずはお試しいただけますでしょうか。(RGBAとかですと対応していないかもしれませんが…)
> YUV444を変換すると緑色の短線が発生する
詳細にご報告いただきありがとうございました。NVEnc 5.41で修正しました。
https://rigaya34589.blog.fc2.com/blog-entry-1383.html
更新ありがとうございます。
> 静止画連番の読み込み
お教え頂いたコマンドで静止画連番(RGB)の読み込みは
問題なく行えることを確認致しました。
ただ、NVEncC --avsw -i "%%08d.png" --fps 60 ~ -o output.mkv 等の
fpsを指定したところ、エンコ時のログとエンコ後ファイルのmeta情報では
VFRの60fpsなのですが、再生してみると動画時間が長くなっており、
AviUtl(L-SMASH利用)で動画を読み込み確認すると
25fpsになっているようでした。
> YUV444を変換すると緑色の短線が発生する
手持ちの動画で試したところ、緑色の短線は発生しなくなっていました。
ご対応感謝します。
追加で判明したことがあるので追記させて頂きます。
エンコードが進むにつれ、NVEncCの
メモリー確保量(コミットサイズ)が増え、
1920x1440の静止画6万フレームほどエンコが進む頃には
約20GBになっていました。
(手動でエンコードを一時停止させると、
メモリの解放が行われるようで、
コミットサイズは約2GBまで減りました)
メモリが足りなくなると、↓のエラーが出て終了します。
(仮想メモリ未使用環境で発生)
avsw: error occured while reading file: 340361 frames, Cannot allocate memory
こちらでも1920x1080のpngを6万フレーム程度読み込ませ、エンコード中のNVEncCをタスクマネージャの詳細タブの「コミットサイズ」を確認しましたが、0.8GB~1.1GB程度で変動はしていましたが、継続的に増えるようなことはありませんでした。
特にこのあたりでメモリ解放漏れ等はなさそうなのですが…
確かめたところ、audio--sorceと併用すると、増え続けるようです。
NVEncC --avsw -i "%%08d.png" --fps 60 --vpp-warpsharp threshold=64,type=1,blur=3,depth=8 --vpp-unsharp radius=1 --vpp-edgelevel strength=3,threshold=41 -c hevc -u quality --vbrhq 0 --vbr-quality 23.6 --max-bitrate 800000 --lookahead 32 --gop-len auto -b 5 --aq --aq-temporal --profile main10 --ref 16 --bref-mode middle --colorrange limited --colormatrix bt709 --colorprim bt709 --transfer bt709 --audio-source "AAC音声付き動画" --output-thread 1 --output-buf 128 --log "ログファイルパス" -o "output.mkv"
audio-sourceで指定するファイルをmka(中身mp3)の短い音声ファイルに
差し替えても、増え続ける事を確認しています。
↓のように色々削ったコマンドでも、
増え方は緩やかになりますが、発生するようです。
%NVEncC% --avsw -i "%%08d.png" --fps 60 -c hevc --audio-source "AAC音声付き動画" -o "output.mkv"
ああ、なるほど、動画付きの音声ファイルを--audio-sourceで読んでいるのですね…。
--audio-sourceは音声読み込みととらえていたので、音声のみのファイルの読み込みを想定しており、そのテストはしていませんでした。確認してみます。