NVEncCのオプションの説明

NVEncCのオプションの説明です。

※2015.03.24 NVEnc 2.01に合わせ更新。
※2016.04.29 NVEnc 2.06に合わせ更新。
※2016.07.19 NVEnc 2.08に合わせ更新。
※2016.07.22 NVEnc 2.09に合わせ更新。
※2016.09.22 NVEnc 3.00に合わせ更新。
※2017.01.09 NVEnc 3.03に合わせ更新。
※2017.02.05 NVEnc 3.06に合わせ更新。
※2017.03.07 NVEnc 3.07に合わせ更新。
※2017.06.11 NVEnc 3.08に合わせ更新。
※2017.06.18 NVEnc 3.11に合わせ更新。
※2017.06.24 NVEnc 3.13に合わせ更新。
※2017.07.05 NVEnc 3.14に合わせ更新。
※2017.07.23 いくつか修正。
※2017.09.05 NVEnc 3.17に合わせ更新。
※2017.09.18 NVEnc 3.20に合わせ更新。
-<短縮オプション名>、--<オプション名> <引数>
引数なしの場合は単体で効果を発揮。

引数のタイプは
<int>   整数で指定
<float> 小数点で指定
<string> 文字列で指定

引数の [ ] 内は、省略可能です。

--(no-)xxx
と付いている場合は、--no-xxxとすることで、--xxxと逆の効果を得る。
例1: --xxx : xxxを有効にする → --no-xxx: xxxを無効にする
例2: --xxx : xxxを無効にする → --no-xxx: xxxを有効にする



コマンドラインの例



基本的なコマンドの表記
NVEncC.exe [Options] -i <filename> -o <filename>

もっと実用的なコマンド
avcuvid読み込み(cuvidデコード使用)の例
NVEncC --avcuvid -i "<mp4(H.264/AVC) file>" -o "<outfilename.mp4>"

avcuvid読み込み(cuvidデコード使用)の例 (インタレ保持)
NVEncC --avcuvid --interlace tff -i "<mp4(H.264/AVC) file>" -o "<outfilename.mp4>"

HEVCエンコード
NVEncC -c hevc -i "<mp4 file>" -o "<outfilename.mp4>"

HEVC 10bitエンコード
NVEncC --avsw -c hevc --output-depth 10 -i "<mp4 file>" -o "<outfilename.mp4>"

HEVC YUV444エンコード
NVEncC --avsw -c hevc --profile main444 -i "<mp4 file>" -o "<outfilename.mp4>"

HEVC YUV444 10bit エンコード
NVEncC --avsw -c hevc --output-depth 10 --profile main444 -i "<mp4 file>" -o "<outfilename.mp4>"

avs(Avisynth)の例 (avsやvpyはvfw経由でも読み込み可能です)
NVEncC -i "<avsfile>" -o "<outfilename.264>"

パイプ利用の例
avs2pipemod -y4mp "<avsfile>" | NVEncC --y4m -i - -o "<outfilename.264>"

avs2pipemodからy4mでパイプ渡し。同様にffmpegからパイプ渡し、なども可能。

ffmpeg -y -i "<ソース動画>" -an -pix_fmt yuv420p -f yuv4mpegpipe - | NVEncC --y4m -i - -o "<outfilename.264>"


raw H.264/ESのmux
H.264/ESで出力し、mp4に格納したり、AAC音声とmuxする場合には、L-SMASHを使って、

muxer.exe -i "<raw H.264/ES file>" -i "<ADTS-AAC>" -o "<muxed mp4 file>"

としてAAC音声と多重化できます。音声がALACの場合には、

muxer.exe -i "<raw H.264/ES file>" -o "<video mp4file>"
remuxer.exe -i "<video mp4file>" -i "<m4a(ALAC in mp4)file>" -o "<muxed mp4 file>"

のように2段階のステップが必要です。

同様にmkvttolnixに含まれるmkvmergeでmuxし、mkvに格納することもできます。



表示系オプション



-h,-? --help
ヘルプの表示

--help-ja
ヘルプの表示 (日本語)

--help-en
ヘルプの表示 (英語)

-v, --version
バージョンの表示

--check-device
NVEncが認識している利用可能なGPUのDeviceIdを表示

--check-hw [<int>]
ハードウェアエンコの可否の表示。数字でDeviceIDを指定できる。省略した場合は"0"。

--check-features [<int>]
NVEncの使用可能なエンコード機能を表示する。数字でDeviceIDを指定できる。省略した場合は"0"。

--check-environment
NVEncCの認識している環境情報を表示

--check-codecs
--check-decoders
--check-encoders
利用可能な音声コーデック名を表示

--check-formats
利用可能な出力フォーマットを表示

--check-protocols
利用可能なプロトコルを表示

--check-avversion
dllのバージョンを表示




エンコードの基本的なオプション



-d, --device <int>
NVEncで使用するDeviceIdを指定する。使用できるデバイスは、--check-deviceで確認できる。

デフォルトは自動。
複数利用可能なGPUがある場合、自動的に使用するGPUを選択する。

判断基準は
・指定のエンコードが可能かどうか
・--avhwが指定されていれば入力ファイルのHWデコードが可能かどうか
・Video Engineの使用率が低い方
・GPUの使用率が低い方
・GPUの世代が新しい方
・GPUのコア数が多い方

Video Engineの使用率とGPUの使用率の取得には、x64版はNVMLライブラリ、x86版はnvidia-smi.exeを実行して取得している。

nvidia-smi.exeは通常ドライバと一緒に"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"にインストールされている。

-c, --codec <string> h264(default), hevc
エンコードするコーデックの指定。

-o, --output <filename>
出力ファイル名の表示、"-"でパイプ出力

-i, --input <filename>
入力ファイル名の設定、"-"でパイプ入力

入力方法と拡張子
NVEncの入力方法は下の表のとおり。入力フォーマットをしてしない場合は、拡張子で自動的に判定される。

使用される読み込み自動読み込み
対象拡張子
Avisynthリーダーavs
VapourSynthリーダーvpy
Aviリーダーavi
y4mリーダーy4m
rawリーダーyuv
avhw/avswリーダーそれ以外


各入力方法の対応色空間
yuv420yuy2yuv422yuv444rgb24rgb32
raw
y4m
avi
avs
vpy
avhw
avsw

◎ … 8bit / 9bit / 10bit / 12bit / 14bit / 16bitに対応
○ … 8bitのみ対応

--raw
入力をraw形式に設定する。
入力解像度、入力fpsの設定が必要。

--y4m
入力をy4m(YUV4MPEG2)形式に変更する。

--avs
入力ファイルをAvisynthで読み込む。

--avi
入力ファイルをaviとして読み込む。

--vpy
入力ファイルをVapourSynthで読み込む。

--avsw
avformat + sw decoderを使用して読み込む。
ffmpegの対応するほとんどのコーデックを読み込み可能。

--avhw [<string>] native (デフォルト), cuda
avformat + cuvid decoderを使用して読み込む。
デコードからエンコードまでを一貫してGPUで行うため高速。
オプションでcuvid使用時にデコーダのモードを指定できるが、通常は特に指定せずに"--avhw"のみで問題ない。省略された場合はnative cuvidモードでデコードする。

対応コーデック対応状況
MPEG1
MPEG2
H.264/AVC
H.265/HEVC
VP8
VP9
VC-1×
WMV3/WMV9×


--interlace <string>
入力フレームがインターレースかどうかと、そのフィールドオーダーを設定する。

--vpp-deinterlaceによりNVEncC内でのインタレ解除を行ったり、そのままインタレ保持エンコードを行う。(インタレ保持エンコードはH.264のみ)

- none ... プログレッシブ
- tff ... トップフィールドファースト
- bff ... ボトムフィールドファースト

--crop <int>,<int>,<int>,<int>
左、上、右、下の切り落とし画素数。

--fps <int>/<int> or <float>
入力フレームレートの設定。raw形式の場合は必須。

--input-res <int>x<int>
入力解像度の設定。raw形式の場合は必須。

--output-res <int>x<int>
出力解像度の設定。avcuvid reader使用時のみ有効。入力解像度と異なる場合、自動的にデコード後、HWリサイズを行う。指定がない場合、入力解像度と同じになり、リサイズは行われない。




エンコードモードのオプション



デフォルトはCQP(固定量子化量)。

--cqp <int> or <int>:<int>:<int> (固定量子化量)
CQP(固定量子化量)でエンコードを行う。<Iフレーム>:<Pフレーム>:<Bフレーム>のQP値を設定。基本的にQP値は I < P < B になるように設定することをおすすめ。

--cbr <int>   (固定ビットレート)
--cbrhq <int> (固定ビットレート (高品質))
--vbr <int>   (可変ビットレート)
--vbrhq <int> (可変ビットレート (高品質))
ビットレートをkbps単位で指定してエンコードを行う。vbr2はvbrより高度な解析を行ってビットレート配分を行うが、やや遅い。



その他のエンコードオプション



--output-depth <int> (8, 10)
出力ビット深度を設定。(デフォルト: 8)

--level <string>
エンコードするコーデックのLevelを指定する。指定しない場合は自動的に決定される。

h264: auto, 1, 1b, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2, 5, 5.1, 5.2
hevc: auto, 1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6, 6.1, 6.2


--profile <string>
エンコードするコーデックのプロファイルを指定する。指定しない場合は自動的に決定される。

h264: auto, baseline, main, high, high444
hevc: auto, main, main10, main444


--lossless
ロスレス出力を行う。自動的にYUV444出力が行われる。(デフォルト: オフ)

--preset <string>
default, quality, performance
NVENCのプリセットを反映する。"自動"設定のパラメータに影響。

--maxbitrate <int>
最大ビットレート(kbps単位)。

--qp-init <int> or <int>:<int>:<int>
初期QP値を<Iフレーム>:<Pフレーム>:<Bフレーム>で設定する。ビットレート指定のエンコードモードを使用する際に、エンコード開始時に適用するQP値として指定される。

動画の先頭部分で必要以上にビットレートが割り振られたり、逆に圧縮がかかりすぎてひどい画質になる場合など、動画の先頭部分の画質を調整したい場合に使用する。

--qp-min <int> or <int>:<int>:<int>
最小QP値を<Iフレーム>:<Pフレーム>:<Bフレーム>で設定する。ビットレート指定のエンコードモード使用時のみ有効。設定したQP値より低いQP値は使用されなくなる。

ビットレート指定モードなどで、静止画などの部分で過剰にビットレートが割り当てられることがあるのを抑制したりするのに使用する。

--qp-max <int> or <int>:<int>:<int>
最大QP値を<Iフレーム>:<Pフレーム>:<Bフレーム>で設定する。ビットレート指定のエンコードモード使用時のみ有効。設定したQP値より高いQP値は使用されなくなる。

指定したビットレートを超えてでも、動画のどんな部分でもある程度の品質を維持したい場合に使用する。

--vbr-quality <float>
VBRモード使用時の目標品質を設定する。(0.0-51.0, 0 = 自動)

--lookahead <int>
lookaheadを有効にし、その対象範囲をフレーム数で指定する。(0-32)
画質の向上に役立つとともに、適応的なI,Bフレーム挿入が有効になる。

--no-i-apapt
lookahead有効時の適応的なIフレーム挿入を無効化する。

--no-b-apapt
lookahead有効時の適応的なBフレーム挿入を無効化する。

--strict-gop
固定GOP長を強制する。

--gop-len <int>
最大GOP長。HWエンコでは、この値が常に使用される。(可変ではない)

-b, --bframes <int>
連続Bフレーム数。現状では、ここで決めたBフレーム数が必ず連続する。(可変ではない)

--ref <int>
参照距離を設定する。NVEncではあまり増やしても品質は向上しない。

--weightp
重み付きPフレームを有効にする。

--aq
フレーム内(空間方向)の適応的量子化を有効にする。(デフォルト:オフ)

--aq-temporal
フレーム間(時間方向)の適応的量子化を有効にする。(デフォルト:オフ)

--aq-strength <int>
AQ強度を指定する。(1(弱) ~ 15(強)、0 = 自動)

--mv-precision <string>
動きベクトル精度 / デフォルト: auto
auto … 自動
Q-pel … 1/4画素精度 (高精度)
half-pel … 1/2画素精度
full-pel … 1 画素精度 (低精度)

--sar <int>:<int>
SAR比 (画素アスペクト比) の指定。

--dar <int>:<int>
DAR比 (画面アスペクト比) の指定。

--fullrange
フルレンジYUVとしてエンコードする。

--videoformat <string>
  undef, ntsc, component, pal, secam, mac
--colormatrix <string>
  undef, bt709, smpte170m, bt470bg, smpte240m, YCgCo, fcc, GBR, bt2020nc, bt2020c
--colorprim <string>
  undef, bt709, smpte170m, bt470m, bt470bg, smpte240m, film, bt2020
--transfer <string>
  undef, bt709, smpte170m, bt470m, bt470bg, smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1, bt2020-10, bt2020-12, smpte2084, smpte428, arib-srd-b67
各種フラグの設定。

--cabac [H.264のみ]
CABACを使用する。 (デフォルト: オン)

--cavlc [H.264のみ]
CAVLCを使用する。 (デフォルト: オフ)

--bluray [H.264のみ]
Bluray用出力を行う。(デフォルト: オフ)

--(no-)deblock [H.264のみ]
デブロックフィルタを有効にする。(デフォルト: 有効)

--direct <string> [H.264のみ]
H.264のBDirect modeを指定する。
auto(default), none, spatial, temporal

--(no-)adapt-transform [H.264のみ]
H.264のadaptive transform modeを有効(無効)にする。

--cu-max <int> [HEVCのみ]
--cu-min <int> [HEVCのみ]
それぞれCUの最大、最小サイズを指定する。8, 16, 32 を指定可能だが、何も指定しないほうが良い結果をもたらすため、非推奨。
HEVCの規格では64まで存在するが、現状NVENCでは32までしかサポートされていない。



入出力 / 音声 / 字幕などのオプション



--input-analyze <int>
libavformatが読み込み時に解析するファイルの時間を秒で指定。デフォルトは5。
音声トラックなどが正しく抽出されない場合、この値を大きくしてみてください(例:60)。

--input-format <string>
avcuvid/avswリーダー使用時に、入力のフォーマットを指定する。

-f, --format <string>
muxerを使用して出力する。<string>には、出力フォーマットを指定することができる。使用可能なフォーマットは--check-formatsで確認できる。指定しない場合は、出力拡張子から自動的に決定する。H.264/Elementary Streamで出力する場合には、"raw"を指定する。

--trim <int>:<int>[,<int>:<int>][,<int>:<int>]...
指定した範囲のフレームのみをエンコードする。
例: --trim 0:1000   (0~1000フレーム目をエンコード)

--seek [<int>:][<int>:]<int>[.<int>]
書式は、hh:mm:ss.ms。"hh"や"mm"は省略可。高速だが不正確なシークをしてからエンコードを開始する。正確な範囲指定を行いたい場合は従来通り--trimで行う。
例1: --seek 0:01:15.400
例2: --seek 1:15.4
例3: --seek 75.4

--audio-copy [<int>[,<int>]...]
avcuvid/avswリーダー使用時のみ有効。音声をmuxしながら出力する。
特に何も指定しなければ、全ての音声ストリームがコピーされる。
--audio-copy 1,2 とすれば音声トラック1,2が抽出される。(トラック番号は、1,2,3...)

--audio-codec [<int>?]<string>
音声を指定のコーデックでエンコードする。使用可能なコーデックは--check-encodersで確認できる。
[<int>?]で、対象の音声トラック(1,2,...)を指定することもできる。
例1: --audio-codec libmp3lame  (音声をmp3に変換)
例2: --audio-codec 2?aac  (音声の第2トラックをaacに変換)

--audio-bitrate [<int>?]<int>
音声をエンコードする際のビットレートをkbpsで指定する。
[<int>?]で、対象の音声トラック(1,2,...)を指定することもできる。
例1: --audio-bitrate 192  (音声を192kbpsで変換)
例2: --audio-bitrate 2?256  (音声の第2トラックを256kbpsで変換)

--audio-stream [<int>?][<string1>][:<string2>]
音声チャンネルの分離・統合などを行う。
--audio-streamが指定された音声トラックは常にエンコードされる。
,(カンマ)で区切ることで、入力の同じトラックから複数のトラックを生成できる。

書式:
<int>に処理対象のトラックを指定する。
<string1>に入力として使用するチャンネルを指定する。省略された場合は入力の全チャンネルを使用する。
<string2>に出力チャンネル形式を指定する。省略された場合は、<string1>のチャンネルをすべて使用する。

例1: --audio-stream FR,FL
最も必要だと思われる機能。デュアルモノから左右のチャンネルを2つのモノラル音声に分離する。

例2: --audio-stream :stereo
どんな音声もステレオに変換する。

例3: --audio-stream 2?5.1,5.1:stereo
入力ファイルの第2トラックを、5.1chの音声を5.1chとしてエンコードしつつ、ステレオにダウンミックスしたトラックを生成する。
実際に使うことがあるかは微妙だが、書式の紹介例としてはわかりやすいかと。

使用できる記号

mono = FC
stereo = FL + FR
2.1 = FL + FR + LFE
3.0 = FL + FR + FC
3.0(back) = FL + FR + BC
3.1 = FL + FR + FC + LFE
4.0 = FL + FR
4.0 = FL + FR + FC + BC
quad = FL + FR + BL + BR
quad(side) = FL + FR + SL + SR
5.0 = FL + FR + FC + SL + SR
5.1 = FL + FR + FC + LFE + SL + SR
6.0 = FL + FR + FC + BC + SL + SR
6.0(front) = FL + FR + FLC + FRC + SL + SR
hexagonal = FL + FR + FC + BL + BR + BC
6.1 = FL + FR + FC + LFE + BC + SL + SR
6.1(front) = FL + FR + LFE + FLC + FRC + SL + SR
7.0 = FL + FR + FC + BL + BR + SL + SR
7.0(front) = FL + FR + FC + FLC + FRC + SL + SR
7.1 = FL + FR + FC + LFE + BL + BR + SL + SR
7.1(wide) = FL + FR + FC + LFE + FLC + FRC + SL + SR

--audio-samplerate [<int>?]<int>
音声のサンプリング周波数をHzで指定する。
[<int>?]で、抽出する音声トラック(1,2,...)を指定することもできる。
例1: --audio-bitrate 44100 (音声を44100Hzに変換)
例2: --audio-bitrate 2?22050 (音声の第2トラックを22050Hzに変換)

--audio-resampler <string>
音声チャンネルのmixやサンプリング周波数変換に使用されるエンジンの指定。・
swr ... swresampler (デフォルト)
soxr ... sox resampler (libsoxr)

--audio-filter [<int>?]<string>
音声に音声フィルタを適用する。適用可能なフィルタはこちらを参照。

[<int>?]で、抽出する音声トラック(1,2,...)を指定することもできる。

例1: --audio-filter volume=0.2 (音量を下げる例)
例2: --audio-filter 2?volume=-4db (第2トラックの音量を下げる例)

--audio-file [<int>?][<string>:]<string>
avqsvリーダー使用時のみ有効。
指定したパスに音声を抽出する。出力フォーマットは出力拡張子から自動的に決定する。

[<string>:] では、出力フォーマットを指定できる。
--audio-file 2?adts:"test_out2" とすれば、拡張子なしでもadtsフォーマットで出力可能。

--audio-source <string>
--audio-copyと併用することで、外部音声ファイルをmuxする。

--audio-ignore-decode-error <int>
dropなどで音声が不完全な場合でも処理を継続できるようにする。具体的には、指定した連続する音声のデコードエラーの数をカウントし、閾値以内ならエラーを無視して処理を継続する。エラーの箇所は無音に置き換える。デフォルトは10。
0とすれば、1回でもデコードエラーが起これば処理を中断してエラー終了する。

--audio-ignore-notrack-error
指定した音声トラックがない場合に、エラー終了させず、エンコードを続行する。

--chapter <string>
指定したチャプターファイルを読み込み反映させる。
nero形式とapple形式に対応する。--chapter-copyとは併用できない。

--chapter-copy
チャプターをコピーする。avqsvリーダー使用時のみ有効。

--sub-copy [<int>[,<int>]...]
字幕をコピーする。特に何も指定しなければ、全ての字幕ストリームがコピーされる。--sub-copy 1,2 とすれば字幕トラック1,2が抽出される。(トラック番号は、1,2,3...)
avqsvリーダー使用時のみ有効。

-m, --mux-options <string1>:<string2>
mux時にオプションパラメータを渡す。<string1>にオプション名、<string2>にオプションの名前を指定する。

例として、HLS用の出力を行いたい場合には、以下のように設定する。

-i <input> -o test.m3u8 -f hls -m hls_time:3 -m hls_segment_filename:test_%08d.ts --gop-len 90

単にffmpegにformatのオプションを渡しているようなものなので、そのほかのオプションはこのあたりを参考にしてください。

--avsync <string> through(default), forcecfr
through … これまで同様、入力はCFR(固定フレームレート)を仮定し、入力ptsをチェックしない。
forcecfr … 入力ptsを見ながら、CFR(固定フレームレート)に合うようフレームの水増し・間引きを行い、音声との同期を強制的に維持できるようにする。主に、入力がvfrやRFFなどのときに音ズレしてしまう際に使用。



VPPオプション



--vpp-deinterlace <string>
--interlaced tff か --interlaced bff が指定されていて、--avhw使用時のみ有効。HWによるインタレ解除を使用する。

- none ... インタレ解除を行わない
- normal ... 標準的な60i→30pインタレ解除。
- adaptive ... normalと同じ
- bob ... 60i→60pインタレ解除。

24fps化(Inverse Telecine)は存在しないので、--vpp-afsを使用する。

--vpp-rff
Repeat Field Flagを反映して、フレームを再構築する。rffによる音ズレ問題が解消できる。--avhw使用時のみ有効。

rff=1の場合のみの対応。また、--trimとは併用できない。

--vpp-afs [<param1>=<value1>][,<param2>=<value2>],...
自動フィールドシフトによるインタレ解除を行う。

パラメータ ... 基本的にはAviutl版のパラメータをそのまま使用する。
top=<int> (上)
bottom=<int> (下)
left=<int> (左)
right=<int> (右)
判定に使用する領域から除外する範囲の指定。NVEncでは、"左"と"右"は4の倍数である必要がある。

method_switch=<int> (切替点)
切替点が大きいほど、新方式の判定になりやすい(0で常に新方式判定off)

coeff_shift=<int> (判定比)
判定比率が小さいほど、フィールドをシフトしにくい(0で常にシフト判定off)

thre_shift=<int> (縞(シフト))
シフトの判定に使用する縞検出の閾値。値が小さいほど、縞と判定されやすくなる。

thre_deint=<int> (縞(解除))
縞解除用の縞検出の閾値。値が小さいほど、縞と判定されやすくなる。

thre_motion_y=<int> (Y動き)
thre_motion_c=<int> (C動き)
動き検出の閾値。値が小さいほど、動きと判定されやすくなる。

level=<int> (解除Lv)
縞解除の方法の選択。
解除Lv
Lv0 解除なし 横縞模様の解除を行わない。
フィールドシフトで組み合わされた新しいフレームがそのまま出力になる。
Lv1 フィールド三重化 フィールドシフトで組み合わされた新しいフレームに、さらに1つ前の フィールドを残像として足しこむ。
動きによる縞模様は完全に残像に変換される。
Lv2 縞検出二重化 フレーム内で縞模様を検出して、縞の部分を平均化して残像に変える。
フィールド単位の動きが少ない映像向け。
Lv3 動き検出二重化 前のフレームと比較をして、動き(色の変化)があった部分だけ縞の平均化を行う。
解除Lv2だと平均化されてしまう静止した横縞模様を保存できる。
静止したテロップの細かい文字や、アニメなどの枠線付きの静止画の 輪郭をつぶしたくない場合に使用する。
Lv4 動き検出補間 前のフレームと比較をして動きがあった部分は、片方のフィールドを潰して残す方のフィールドの画像で補間する。
残像はなくなりますが、この解除がかかった部分は縦の解像度が半分になる。
Lv5 斜め線補正補間 非対応


shift=<bool> (フィールドシフト)
フィールドシフトを行う。

drop=<bool> (間引き)
フィールドシフトを行うことで生じた表示時間の1フレームより短いフレームを間引く。

smooth=<bool> (スムージング)
24fps=<bool> (24fps化)
24fps化を強制する、映画・アニメ用のオプション。フィールドシフトと間引きをonにする必要がある。

tune=<bool> (調整モード)
縞模様と動きの判定結果の確認用。
意味
動きを検出
縞を検出
水色 動き + 縞を検出


rff=<bool>
入力フレームにrffフラグ付きのプログレフレームがある場合、これをチェックしてインタレ解除処理に反映する。rffフラグ付きのプログレフレームについては、フィールドシフトを行わずに、フレームの表示時間の修正のみを行う。

log=<bool>
フレームごとの判定状況等をcsvファイルで出力。(デバッグ用のログ出力)

一括設定用オプション
たくさんあるパラメータを一括指定するためのオプション。一括設定用オプションは必ず先に読み込まれ、個別オプションの指定があればそちらで上書きされる。

ini=<string>
指定したini設定ファイルから設定を読み込む。この設定ファイルはAviutl版自動フィールドシフト 高速化 7.5a+20以降のafs.aufで出力できるものを使用する。

iniファイルの例

[AFS_STG]
up=8
bottom=8
left=16
right=16
method_watershed=91
coeff_shift=191
thre_shift=447
thre_deint=44
thre_Ymotion=111
thre_Cmotion=222
mode=4
field_shift=1
drop=1
smooth=1
force24=1
tune_mode=0
rff=0
log=0


preset=<string>

以下の表のプリセットをロードします。


例: アニメプリセットをロード後、"24fps"をonに、"rff"を"on"に
--vpp-afs preset=anime,24fps=true,rff=true

default triple
(動き重視)
double
(二重化)
anime
cinema
(アニメ/
映画)
min_afterimg
(残像
最小化)
24fps
(24fps
固定)
30fps
(30fps
固定)
method_switch 0 0 0 64 0 92 0
coeff_shift 192 192 192 128 192 192 192
thre_shift 128 128 128 128 128 448 128
thre_deint 48 48 48 48 48 48 48
thre_motion_y 112 112 112 112 112 112 112
thre_motion_c 224 224 224 224 224 224 224
level 3 1 2 3 4 3 3
shift on off on on on on off
drop off off on on on on off
smooth off off on on on on off
24fps off off off off off on off
tune off off off off off off off
rff off off off off off off off


--vpp-resize <string>

標準で使用可能なもの
default自動的に適切なものを選択
bilinear線形補間
spline366x6 Spline補間
nppi64_80.dll導入で追加されるもの(x64のみ)
nn最近傍点選択
npp_linearnppの線形補間
cubic4x4 3次補間
cubic_bspline4x4 3次補間 (B=1, C=0)
cubic_catmull4x4 3次補間 (B=0, C=1/2)
cubic_b05c034x4 3次補間 (B=1/2, C=3/10)
supernppのsuper sampling(詳細不明)
lanczons4x4 Lanczos2法



--vpp-knn [<param1>=<value1>][,<param2>=<value2>],...
K nearest neighborなる方法によるノイズ除去。強めのノイズ除去を行いたいときに使用する。

パラメータ
radius=<int>
適用半径。1-5の範囲で指定、デフォルトは3。

strength=<float>
フィルタの強さ。0.0-1.0の範囲で指定、デフォルトは0.08。

lerp=<float>
ノイズ除去ピクセルへのオリジナルピクセルのブレンド度合い。0.0-1.0の範囲で指定、デフォルトは0.2。

th_lerp=<float>
エッジ検出の閾値。0.0-1.0の範囲で指定、デフォルトは0.8。

使用例(すこし強め): --vpp-knn radius=3,strength=0.10,lerp=0.1


--vpp-pmd [<param1>=<value1>][,<param2>=<value2>],...
正則化pmd法によるノイズ除去。弱めのノイズ除去を行いたいときに使用する。

パラメータ
apply_count=<int>
適用回数。デフォルトは2。

strength=<float>
フィルタの強さ。0-100の範囲で指定、デフォルトは100。

threshold=<float>
フィルタの輪郭検出の閾値。小さいほど輪郭を保持するようになるが、フィルタの効果も弱まる。

0-255の範囲で指定、デフォルトは100。

使用例(すこし弱め): --vpp-pmd apply_count=2,strength=90,threshold=120

--vpp-gauss <int>
nppi64_80.dll導入が必要。
適用サイズを指定してガウスフィルタをかける。サイズは3,5,7のどれか。


--vpp-unsharp [<param1>=<value1>][,<param2>=<value2>],...
unsharpフィルタ。輪郭・ディテール強調用のフィルタ。

パラメータ
- radius=<int> (default=3, 1-9)
輪郭・ディテール検出の範囲。より大きな値とすることで、より広い範囲のディテールに反応して強調をかけるようになる。

- weight=<float> (default=0.5, 0-10)
輪郭・ディテール強調の強さ。より大きな値とすることで、強く強調がかかる。

- threshold=<float> (default=10.0, 0-255)
輪郭・ディテール検出の閾値。閾値以上の差異がある画素に対して、輪郭強調を行う。


例: やや強め
--vpp-unsharp weight=1.0


--vpp-edgelevel [<param1>=<value1>][,<param2>=<value2>],...
エッジレベル調整フィルタ。輪郭強調用のフィルタ。

パラメータ
- strength=<float> (default=5.0, -31 - 31)
輪郭強調の強さ。より大きな値とすることで、より広い範囲のディテールに反応して強調をかけるようになる。

- threshold=<float> (default=20.0, 0 - 255)
輪郭強調を行わないようにするノイズの閾値。より大きな値ほど大きな輝度の変化をノイズとして扱うようになる。

- black=<float> (default=0.0, 0-31)
輪郭の黒い部分について、より黒くシュートさせて輪郭を強調するようにする。

- white=<float> (default=0.0, 0-31)
輪郭の白く部分について、より白くシュートさせて輪郭を強調するようにする。


例: やや強め(Aviutl版のデフォルト)
--vpp-edgelevel strength=10.0,threshold=16.0,black=0,white=0

例: 輪郭の黒い部分を気持ち強める
--vpp-edgelevel strength=5.0,threshold=24.0,black=6.0



--vpp-deband [<param1>=<value>][,<param2>=<value>][...]

パラメータ
range=<int> (default=15, 0-127)
  ぼかす範囲です。この範囲内の近傍画素からサンプルを取り、ブラー処理を行う。

sample=<int> (default=1, 0-2)
  設定値:0
  周辺1画素を参照し、元の画素値を維持したまま処理を行う。

  設定値:1
  周辺1画素とその点対称画素の計2画素を参照し、ブラー処理を行う。

  設定値:2
  周辺2画素とその点対称画素の計4画素を参照し、ブラー処理を行う。

thre=<int> (一括設定)
thre_y=<int> (default=15, 0-31)
thre_cb=<int> (default=15, 0-31)
thre_cr=<int> (default=15, 0-31)
  y,cb,cr 各成分の閾値。この値が高いと階調飛びを減らす一方で、細かい線などが潰れやすくなる。

dither=<int> (一括設定)
dither_y=<int> (default=15, 0-31)
dither_c=<int> (default=15, 0-31)
 y, cb & crのディザの強さ。

seed=<int>
 乱数シードの変更。 (default=1234)

blurfirst (default=off)
ブラー処理を先にすることでディザ強度を減らしつつ、階調飛びが多い素材での効果を上げる。
全体的に副作用が強くなり細かい線が潰れやすくなる。

rand_each_frame (default=off)
  毎フレームシード値を変更する。

例: --vpp-deband range=31,dither=12,rand_each_frame


--vpp-delogo <string>
ロゴファイルを指定する。".lgd",".ldp",".ldp2"に対応。
通常、複数のオプションを組み合わせて使用する。(ファイルにロゴがひとつの".lgd"なら不要)

例:
--vpp-delogo "logopack.ldp2" --vpp-delogo-select "TBS 1440x1080"
ロゴパックファイル "logopack.ldp2" からロゴ "TBS 1440x1080" を使用。

--vpp-delogo-select <string>
ロゴパックの場合に、使用するロゴを以下のいずれかで指定する。
・ロゴ名(完全一致!)
・インデックス (1,2,...)
・自動選択用iniファイル
下記の書式に従って、入力ファイル名から自動的にロゴを選択する。

書式
[LOGO_AUTO_SELECT]
logo<連番数字>=<マッチパターン>,<リストに表示されているロゴ名(完全一致!)>

設定ファイルの例

[LOGO_AUTO_SELECT]
logo1= (NHK-G).,NHK総合 1440x1080
logo2= (NHK-E).,NHK-E 1440x1080
logo3= (MX).,TOKYO MX 1 1440x1080
logo4= (CTC).,チバテレビ 1440x1080
logo5= (NTV).,日本テレビ 1440x1080
logo6= (TBS).,TBS 1440x1088
logo7= (TX).,TV東京 50th 1440x1080
logo8= (CX).,フジテレビ 1440x1088
logo9= (BSP).,NHK BSP v3 1920x1080
logo10= (BS4).,BS日テレ 1920x1080
logo11= (BSA).,BS朝日 1920x1080
logo12= (BS-TBS).,BS-TBS 1920x1080
logo13= (BSJ).,BS Japan 1920x1080
logo14= (BS11).,BS11 1920x1080 v3


この場合、入力ファイル名が"響け!ユーフォニアム #13 「さよならコンクール」 (BS11).ts"なら、ロゴ名"BS11 1920x1080 v3"が使用される。

--vpp-delogo-pos <int>:<int>
1/4画素精度のロゴ位置の調整。Aviutlで言うところの <位置 X>:<位置 Y>。

--vpp-delogo-depth <int>
ロゴの透明度の補正。デフォルト128。Aviutlで言うところの <深度>。

--vpp-delogo-y <int>
--vpp-delogo-cb <int>
--vpp-delogo-cr <int>
ロゴの各色成分の補正。Aviutlで言うところの <Y>, <Cb>, <Cr>。

--vpp-perf-monitor
各フィルタのパフォーマンス測定を行う。全体のエンコード速度がやや遅くなることがある点に注意。



制御系のオプション



--cuda-schedule <string>
主に、GPUのタスク終了を待機する際のCPUの挙動を決める。デフォルトはsync。

auto
CUDAのドライバにモード決定を委ねる。

spin
常にCPUを稼働させ、GPUタスクの終了を監視する。復帰のレイテンシが最小となり、最も高速だが、1コア分のCPU使用率を常に使用する。

yield
基本的にはspinと同じだが、他のスレッドがあればそちらに譲る。

sync
GPUタスクの終了まで、スレッドをスリープさせる。わずかに性能が落ちるかわりに、特にHWデコード使用時に、CPU使用率を大きく削減する。

--output-buf <int>
出力バッファサイズをMB単位で指定する。デフォルトは8、最大値は128。0で使用しない。

出力バッファはディスクへの書き込みをアプリケーション側で制御し、バッファサイズ分たまるまで書き出さないようにする。これにより、ディスクへの書き込み単位が大きくなり、エンコード中のディスクへの読み書きの混在を防ぎ、高速化が期待できる。またディスク上でのファイルの断片化の抑止も期待できる。

一方、あまり大きく設定しすぎると、逆に遅くなることがあるので注意。基本的にはデフォルトのままで良いと思われる。

file以外のプロトコルを使用する場合には、この出力バッファは使用されず、この設定は反映されない。また、出力バッファ用のメモリは縮退確保するので、必ず指定した分確保されるとは限らない。

--output-thread <int>
出力スレッドを使用するかどうかを指定する。
-1 … 自動(デフォルト)
0 … 使用しない
1 … 使用する
出力スレッドを使用すると、メモリ使用量が増加するが、エンコード速度が向上する場合がある。

--log <string>
ログを指定したファイルに出力する。

--log-level <string>
error, warn, info(default), debug, trace
ログ出力の段階を選択する。不具合などあった場合には、--log-level debug --log log.txtのようにしてデバッグ用情報を出力したものをコメントなどで教えていただけると、不具合の原因が明確になる場合があります。

--max-procfps <int>
QSVの処理速度の上限を設定。デフォルトは0 ( = 無制限)。複数本QSVエンコードをしていて、ひとつのストリームにCPU/GPUの全力を奪われたくないというときのためのオプション。
例: --max-procfps 90 (→ 最大速度を90fpsに制限)

--perf-monitor [ <string>][, <string>]...
エンコーダのパフォーマンス情報を出力する。

パラメータとして出力したい情報名を下記から選択できる。デフォルトはall (すべての情報)。


all ... monitor all info
cpu_total ... cpu total usage (%)
cpu_kernel ... cpu kernel usage (%)
cpu_main ... cpu main thread usage (%)
cpu_enc ... cpu encode thread usage (%)
cpu_in ... cpu input thread usage (%)
cpu_out ... cpu output thread usage (%)
cpu_aud_proc ... cpu aud proc thread usage (%)
cpu_aud_enc ... cpu aud enc thread usage (%)
cpu ... monitor all cpu info
gpu_load ... gpu usage (%)
gpu_clock ... gpu avg clock
vee_load ... gpu video encoder usage (%)
gpu ... monitor all gpu info
queue ... queue usage
mem_private ... private memory (MB)
mem_virtual ... virtual memory (MB)
mem ... monitor all memory info
io_read ... io read (MB/s)
io_write ... io write (MB/s)
io ... monitor all io info
fps ... encode speed (fps)
fps_avg ... encode avg. speed (fps)
bitrate ... encode bitrate (kbps)
bitrate_avg ... encode avg. bitrate (kbps)
frame_out ... written_frames


--perf-monitor-interval <int>
--perf-monitorでパフォーマンス測定を行う時間間隔をms単位で指定する(50以上)。デフォルトは 500。




スポンサーサイト

コメントの投稿

非公開コメント

いつも使わせていただいてます

日に日に高速になっていくエンコード環境を提供してもらい感謝しております。

NVEnc2.00β4を使っています
エンコードが始まらないことがあるのでお聞きしたいと思いました。

avs読み込みでのNVEncC使用時に
avsスクリプトにOpenCLを使うフィルターがあると
エンコードが始まらずエラーも出ず停止してしまいます。
aviutlの拡張NVEnc出力も同様です
avsファイル自体のAvsPmod・aviutlへの読み込み、プレビューは問題なくできます

使用したavisynthフィルター
・svpflow1.dllとsvpflow2.dll
・nnedi3ocl.dll


●使用環境
OS Windows 10 (x64)
CPU Intel Core i7-3770S
GPU Info Intel(R) HD Graphics 4000 (16 EU) @ 1400 MHz (10.18.10.4276)

VGA GTX950 (ドライバ361.91)・(Khronos OpenCL ICD 1.2.11.0)

AviSynth+ 0.1 (r1779, MT, i386)
aviutl(1.00)

(OSは64bitですが、avsからエンコードまでx86の方で行っています)


NVEncCからdebug logで記録できるところまで出しました。

--------------------------------------------------------------------------------
video.264
--------------------------------------------------------------------------------
QSVEnc 2.00β3 (x86)←何故か表記がQSVEncとなりましたがNVEncCでのlogです
OS Windows 10 (x64)
CPU Info Intel Core i7-3770S @ 3.10GHz [TB: 4.00GHz] (4C/8T)
GPU Info Intel(R) HD Graphics 4000 (16 EU) @ 1400 MHz (10.18.10.4276)
Loaded nvEncodeAPI.dll.
nvEncodeAPICreateInstance: Success.
cuInit: Success.
cuDeviceGetCount: Success.
cuDeviceGet: Success.
NVENC capabilities: OK.
cuCtxCreate: Success.
cuCtxPopCurrent: Success.
cuvidCtxLockCreate: Success.
InitCuda: Success.
InitDevice: Success.
NvEncOpenEncodeSessionEx: Success.
avs reader selected.
InitInput: input selected : 4.
avs: Avisynth 2.60(yv12)->nv12 [AVX], 1920x1080, 60000/1001 fps
InitInput: Success.
Open file "video.264": Success.
createDeviceFeatureList: Success.
CreateDecoder: Success.
SetInputParam: Success.←ここで止まってしまいます

ここから進まないので、ctrl+cで終了して出てきたlogになります


また、詳しくないのですが いろいろ試すうちに
エンコードできるケースと、できない(エンコードが上記にように始まらない)ケースが
ありましたのでそちらも一応お知らせします。

SysWOW64フォルダ内のOpenCL関連と思われるファイルについて
①intel内臓GPUの intel_OpenCL_ICD32.dll と intelOpenCL32.dll
②NvidiaのOpenCL.dll  の3つがありまして…

avisynthのOpenCLを使うフィルターで 上記の①の方をフィルター処理に使わせると正常にエンコードができますが
同様に、②の方をフィルター処理に使わせつつ、NVEnc.exeにエンコードさせると最初に書いたように停止してしまいます。

今まで試したようなことをQSVEncでやってみると問題なくエンコードできます。
なお、使用しているCPUがskylakeでは無いため、--fixed-func のオプションを付けた場合は試せていません


ダラダラの長文で非常に読み難くなってしまい、大変申し訳ないのですが
現状β版であることを理解したうえで、今後のバージョンアップによって
NvidiaのOpenCL.dllを他と併用しつつ、NVEnc.exeでのエンコードが可能になるのか
という事をお聞きしたかったのです。





Re: いつも使わせていただいてます

詳細なログをいただき、ありがとうございます。
SetInputParam: Success
の次に行うのは、
m_pEncodeAPI->nvEncInitializeEncoder
という、NVENCを初期化する部分で、ここで止まっていることになります。

これは、NVIDIAのドライバと同時にインストールされる"nvEncodeAPI.dll"を呼び出し、NVENCのエンコーダを初期化するものです。ここで止まってしまう原因は、NVEncの呼び出し方が悪いとか、あるいはそもそもOpenCLとCUDAを使用するNVENCは共存できないとかが考えられるのですが、いまのところ不明です。

楽観的に考えると、同一プロセスからNVIDIAのOpenCLとNVENCを呼ばなければ回避できたりするかもしれないと思います。avs読み込みでしたら、一度avs2pipemodでavsを読み込み、パイプ経由でフレームをNVEncCに渡してみていただけないでしょうか? (やはりだめかもしれませんが…)

こちらでも時間があるときに、実際に環境を構築して調査してみたいと思います。

avs2pipemod経由で上手くいきました

助言された通りにavs2pipemodで処理を分けたところ
止まることなく、NVIDIAのOpenCL.dllを使わせつつ
NVEncCによる正常なエンコードができました。

OpenCLフィルターの処理内容にもよりますが、自分の使用環境では
フィルターをintel内臓GPU側のOpenCL.dllで処理させたときより
NVIDIA GPU側のOpenCL.dllで処理させた方が、
3倍程早いエンコードスピードになりました。

それぞれのエンコード結果のdebugログですが、長いので次のコメントへ送りました。
早々と解決策を教えてくださりありがとうございました。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: avs2pipemod経由で上手くいきました

>pan様
うまくいったようでよかったです。またログを提供いただきありがとうございました。

FrameQueueのSleepをやめてWaitForSingleObjectとSetEventのブロッキング動作に変えるのはいかがでしょう?
キューが空もしくは満杯の状態のCPU効率が上がるかも。

No title

FrameQueueをI/O Completion Portsで同期するように変更して試してみましたが一般的な利用シーンだと効果なかったです・・・
名前付きパイプ\\.\pipe\input.mp4を入力ファイルとし、そこへ故意にゆっくりと書き込んでいく特殊な状況を作ってやっと効果が分かる程度でした。(dequeue空転)

遊んでいるCUDAコアを見ると、回す仕事がやはり欲しくなりますね〜w

Re: No title

入力が遅い場合にCPU使用率が低減できるのでは、というご指摘ありがとうございました。

NVEnc 2.02でおっしゃてくださったようにEventを使用してCPU使用率を削減しました。

No title

改善ありがとうございます。
tvremoteviewerからNVEncC64.exeを起動させる方法がわからなくてハマってましたが、
ファイル名をQSVEncC64.exeに変えたら認識されました。
これが正しい方法なのかは分かりませんが、問題なく動いているようです。

Pentium G6950+GTX 750 Tiのサーバで、
ffmpeg -vcodec nvencより1.3倍速くなりました。
CPUも70%くらいから25%に改善されるので、
NVEncCに切り替えます。

Re: No title

tvremoteviewerは実行ファイルをファイル名で認識しているようだったので、わたしもNVEncCをQSVEncCに書き換えて実行していました。書き忘れてすみません。

あとは"--avqsv"を"--avcuvid"にするぐらいでしょうか。

これでたぶん問題ない気がします。

プログレッシブのまま出力したい

少し特殊な使い方かもしれませんが、H.264→HEVCのエンコードの際に、インターレースがかかってしまう事態が発生してしまいまして…。

<エンコード元ファイル>
- H.264 High Lv.4
- 29.97fps CFR
- QSVでデインタレ済み(PPF)

<エンコードしたいフォーマット>
- HEVC (プロファイル・レベルは自動)
- ビットレート変更(指定ではvbr2でlookahead30)

<コマンドオプション>
--avcuvid --audio-copy -c hevc --output-depth 10 --vbr2 2250 --maxbitrate 5000 --lookahead 30

つまり単純に圧縮がしたいだけなのですが、この指定でエンコードをかけると、ビットレートなどは反映されているのですが、何故かBFFインターレースになっていました。原因や対処法など、お教えいただけると幸いです。

●エンコード中表示
NVEnc 3.00 (x64), using NVENC API v7.0
OS Version Windows 10 (x64)
CPU Intel Celeron(R) G3920 @ 2.90GHz (2C/2T)
GPU #0: GeForce GTX1060 3GB (9EU) @ 1835MHz (373.06)
Input Buffers CUDA, 32 frames
Input Info avcuvid: H.264/AVC, 1440x1080, 30000/1001 fps
Vpp Filters cspconv(nv12 -> p010)
Output Info H.265/HEVC main10 @ Level auto
1440x1080p 4:3 29.97fps (30000/1001fps)
avwriter: hevc, aac => mp4
Rate Control VBR2
Bitrate 2250 kbps (Max: 5000 kbps)
Initial QP I:20 P:23 B:25
VBV buf size auto
Lookahead on, 30 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 0 frames
Ref frames 3 frames, LTR: off
AQ off
MV Quality Q-pel
CU max / min 32 / 8

GPU Driver(v373.06)が10/6にリリースされたばかりなのは関係あるのかな、ないのかな、どうでしょう

Re: プログレッシブのまま出力したい

詳細に報告いただきありがとうございました。

mux時にプログレッシブかどうかの判定を誤り、インタレ扱いになってしまっていたようです。NVEnc 3.01で修正しました。
http://rigaya34589.blog135.fc2.com/blog-entry-838.html

インタレ保持エンコードがうまくいきません

Driver 369.09
NVEncC --avcuvid --audio-copy 1 --interlaced tff -i "%~1" -o "output%~n1.mp4"

NVEnc 3.01 (x64), using NVENC API v7.0
OS Version Windows 10 (x64)
CPU Intel Core i7-2700K @ 3.50GHz (4C/8T)
GPU #0: GeForce GTX 760
Input Buffers CUDA, 32 frames
Input Info avcuvid: MPEG2, 1920x1080, 30000/1001 fps
Vpp Filters copyDtoD
Output Info H.264/AVC high @ Level auto
1920x1080i 1:1 29.970fps (30000/1001fps)
avwriter: h264, aac => mp4
Rate Control CQP I:20 P:23 B:25
Lookahead off
GOP length 300 frames
B frames 3 frames
Ref frames 3 frames, LTR: off
AQ off
MV Quality Q-pel
CABAC/deblock cabac / on

エンコードはされますが、縦に2倍に引き伸ばされ、上半分だけの1920x1080動画が出来上がります。
--vpp-deinterlace none や --tff も組み合わせて試しましたが結果は変わりませんでした

Re: インタレ保持エンコードがうまくいきません

報告いただき、ありがとうございました。3.02で修正できていると思います。
http://rigaya34589.blog135.fc2.com/blog-entry-853.html

Aviutlプラグイン版のオプション指定について

エンコードの高速さでNVEncのAviutlプラグイン版を利用させていただいております。

さて、CUI版にある--audio-streamオプションをAviutlプラグイン版に適用することはできませんでしょうか。
LRに振り分けられた、デュアルモノ音声のエンコードにも利用したく。
またその他CUI版にあるオプションをプラグイン版で使うような、オプション入力テキストボックス画面は作れないものでしょうか。

もし既に設定画面があるようでしたら申し訳ございません。
是非ご検討をお願いいたします。

Re: Aviutlプラグイン版のオプション指定について

残念ながら、NVEncCの--audio-streamなどの、入力ファイルから直接データを取り出すようなオプション類については、Aviutlプラグインのほうにつけることはできません。

AviutlプラグインのほうはあくまでAviutlでの編集結果を出力するもののため、Aviutlの出力プラグインではその仕組み上、NVEncCのような入力ファイルを直接変換するような動きができないためです。

すみませんが、このあたりは使い分けになってしまうかと思います。

No title

ご返答ありがとうございます。
プラグインの仕組み上無理とのこと、了解しました。

ではですが、aviutlで編集されたデュアルモノ左右音声のうち片chを完全に捨てて、モノラル音声1chとして音声エンコーダに渡すようなことはできませんでしょうか。

もしくは、qaacであればこのようなオプションがあったような気がしますので、qaacのオプションを出力プラグイン設定画面内で指定できれば解決できるかもしれません。

すでに出力プラグインの仕事の範疇ではなくなっているような気もしますが、ご検討いただけると大変有難いです。

Re: No title

入力側でなく、あえて出力側で処理する場合、qaacのchanmapを使うのが良いかもしれません。NVEnc.iniのqaacのコマンド部分にchanmapオプションを使う記述を追記してください。(NVEnc.iniは自由に拡張可能です)

--chanmap 1,1で左だけを複製してステレオに、--chanmap 2,2で右だけを複製してステレオに変換できるはずです。

片方をmonoとして取り出したいとか、両方をmonoとして取り出したいとなると、いろいろ考えたのですが、現状の仕組みではできそうにありません。

すみませんが、ひとまずqaacのchanmapオプションを試してみていただけないでしょうか?

No title

大変丁寧なご返答、大変ありがとうございます。

NVEnc.iniにqaacオプションを指定できるとのことで、是非試してみたいと思います。

これで英語版と日本語版の動画を簡便に作ることができそうです(出力側で行いたかったのは、編集を1回で済ませて、エンコード2回のほうが手数が少なく2種類の動画をつくることができるためでした)。


ご丁寧にありがとうございました。

No title

エラーです…
------------------------------------------------------------------------------------------------------------------------------
nvenc [error]: copyHtoD: failed to allocate memory: cudaErrorUnknown.
auo [info]: 音声処理の終了を待機しています...
auo [info]: qaac (v2.64) で音声エンコードを行います。 ABR (AAC) ビットレート指定, 256kbps
auo [info]: 総エンコード時間 : 0時間 0分 0.2秒
auo [info]: エンコードを中断しました。


スペックです。
MS Windows 10 バージョン1607
Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 4.00GHz
RAM:16GB
GPU:NVIDIA GeForce GTX 1060 3GB

いろいろ調べてみると「メモリ不足」らしいのですが、
どうなんでしょう・・・。
<追記>
できるだけ初期の設定で出力すると
------------------------------------------------------------------------------------------------------------------------------
nvenc [error]: cuCtxCreate error:0x2 (CUDA_ERROR_OUT_OF_MEMORY)
nvenc [error]: Cudaの初期化に失敗しました。
auo [info]: 総エンコード時間 : 0時間 0分 0.2秒

となりました・・・

Re: No title

こちらでもいろいろ試しましたが、再現せず、よくわからない状況です。

Aviutlは32bitなので、メモリを4GBまでしか使えない一方、結構NVEncでは無駄にメモリを取ってしまっていて、加えてNVEnc 3.14でさらにメモリ使用量を増やしたので本当にメモリ不足かもしれません。

ひとつ前のNVEnc 3.13でも動かないでしょうか?

お手数おかけしてすみませんが、ダウンロード先の[NVEnc_old]フォルダの中にNVEnc_3.13_7zip.7zがありますので、そちらも試してみていただけないでしょうか?

返信ありがとうございます

こんな時間にすみません。
返信ありがとうございます!
試してみたものの、別のエラーが出てしまいました。
------------------------------------------------------------------------------------------------------------------------------
nvenc [error]: cuCtxCreate error:0x2 (CUDA_ERROR_OUT_OF_MEMORY)
nvenc [error]: Cudaの初期化に失敗しました。

この出力をする前に一度出力しているのですが、
その時はエンコーダの初期化に失敗してしまったみたいです。

Re: 返信ありがとうございます

さらに調べましたが、現状こちらでの再現が難しく、なにが起こっているのかわからない状態です。申し訳ありません…。

そこで、NVEnc.auoのテスト版を作成してみました。より細かい情報が出るようになっていますので、一度NVEnc.auoをこちらに差し替えて実行いただき、その際ログウィンドウに表示された内容をそのまますべてコピペしていただけないでしょうか。

お手数おかけしますが、よろしくお願いします。

テスト版 → https://1drv.ms/u/s!AsYziax1Q91rrjDPnXu6uYd-R56F

無事、解決いたしました!

以下、出力ログです。
とても丁寧な対応、ありがとうございました!
------------------------------------------------------------------------------------------------------------------------------
nvenc [info]: Loaded nvEncodeAPI.dll.
nvenc [info]: nvEncodeAPICreateInstance: Success.
nvenc [info]: cudaGetLastError: cudaSuccess.
nvenc [info]: NVEnc (x86) 3.14 (r553) by rigaya, Jul 9 2017 21:15:27 (VC 1900/Win/avx2)
nvenc [info]: OS Version Windows 10 x64 (14393)
nvenc [info]: CPU Intel Core i7-6700K @ 4.00GHz (4C/8T)
nvenc [info]: GPU #0: GeForce GTX 1060 3GB (9 EU) @ 1708 MHz (384.76)
nvenc [info]: NVENC / CUDA NVENC API 8.0, CUDA 9.0, schedule mode: unknown
nvenc [info]: PeakPrivatesize: 548.3 MB
nvenc [info]: Privatesize: 357.1 MB
nvenc [info]: PeakVirtualSize: 3561.9 MB
nvenc [info]: VirtualSize: 3349.2 MB
nvenc [info]: cuInit: Success.
nvenc [info]: cuDeviceGetCount: Success.
nvenc [info]: cuDeviceGet: ID:0.
nvenc [info]: cuDeviceGetName: GeForce GTX 1060 3GB.
nvenc [info]: cuDeviceComputeCapability: Success: 6.1.
nvenc [info]: NVENC capabilities: OK.
nvenc [info]: using cuda schdule mode: sync.
nvenc [info]: cuCtxCreate: Success.
nvenc [info]: InitCuda: Success.
nvenc [info]: InitDevice: Success.
nvenc [info]: Performace Monitor: none
nvenc [info]: Performace Plot : none
nvenc [info]: NvEncOpenEncodeSessionEx: Success.
nvenc [info]: unknown: auo(yuy2)->nv12 [AVX2], 1920x1080, 60/1 fps
nvenc [info]: InitInput: Success.
nvenc [info]: createDeviceFeatureList: Success.
nvenc [info]: InitDecoder: Success.
nvenc [info]: InitFilters: Success.
nvenc [info]: SetInputParam: Success.
nvenc [info]: m_pEncodeAPI->nvEncInitializeEncoder: Success.
nvenc [info]: CreateEncoder: Success.
nvenc [info]: AllocateIOBuffers: Success.
nvenc [info]: bitstream: Opened file "D:\Kotori_Aozora_\Videos\YouTube\テスト動画\test.264"
nvenc [info]: bitstream: Added 8 MB output buffer.
nvenc [info]: Output: Initialized bitstream writer.
nvenc [info]: InitOutput: Success.
nvenc [info]: NVEnc (x86) 3.14 (r553) by rigaya, Jul 9 2017 21:15:27 (VC 1900/Win/avx2)
nvenc [info]: OS Version Windows 10 x64 (14393)
nvenc [info]: CPU Intel Core i7-6700K @ 4.00GHz [TB: 4.19GHz] (4C/8T)
nvenc [info]: GPU #0: GeForce GTX 1060 3GB (9 EU) @ 1708 MHz (384.76)
nvenc [info]: NVENC / CUDA NVENC API 8.0, CUDA 9.0, schedule mode: sync
nvenc [info]: Input Buffers CUDA, 36 frames
nvenc [info]: Input Info auo(yuy2)->nv12 [AVX2], 1920x1080, 60/1 fps
nvenc [info]: Vpp Filters copyHtoD
nvenc [info]: Output Info H.264/AVC high @ Level auto
nvenc [info]: 1920x1080p 1:1 60.000fps (60/1fps)
nvenc [info]: Encoder Preset default
nvenc [info]: Rate Control VBRHQ
nvenc [info]: Bitrate 7500 kbps (Max: 17500 kbps)
nvenc [info]: Target Quality auto
nvenc [info]: Initial QP I:20 P:23 B:25
nvenc [info]: VBV buf size auto
nvenc [info]: Lookahead off
nvenc [info]: GOP length 600 frames
nvenc [info]: B frames 3 frames
nvenc [info]: Ref frames 3 frames, LTR: off
nvenc [info]: AQ off
nvenc [info]: Others mv:auto cabac deblock adapt-transform:auto bdirect:auto
nvenc [info]:
nvenc [info]: Flushed Encoder
nvenc [info]: bitstream: Closing...
nvenc [info]: bitstream: Closed file pointer.
nvenc [info]: bitstream: Closed.
nvenc [info]: encoded 420 frames, 11.77 fps, 277.78 kbps, 0.23 MB
nvenc [info]: frame type IDR 1
nvenc [info]: frame type I 1, total size 0.03 MB
nvenc [info]: frame type P 105, total size 0.16 MB
nvenc [info]: frame type B 314, total size 0.04 MB
auo [info]: NVEnc エンコード : 0時間 0分36.4秒
nvenc [info]: unknown: Closing...
nvenc [info]: unknown: Close...
nvenc [info]: Closing perf monitor...
auo [info]: qaac (v2.64) で音声エンコードを行います。 ABR (AAC) ビットレート指定, 320kbps
auo [info]: L-SMASH muxer (r1450)でmuxを行います。映像: on, 音声: on, tc:off, chap:off, 拡張モード:なし
auo [info]: 総エンコード時間 : 0時間 0分37.1秒

Re: 無事、解決いたしました!

いや、実は解決につながる変更はしてないはずなのですが、ひとまず解決して良かったです。

ただ、正直申しあげてログに出力されているメモリの使用状況はギリギリで、いつ再発してもおかしくない状態に思います。

nvenc [info]: PeakVirtualSize: 3561.9 MB
nvenc [info]: VirtualSize: 3349.2 MB

ここは、Aviutlの仮想メモリ空間の使用量を示しており、Aviutlはここが最大でも4096MBまでしか扱えません。もし再発するような場合には、Aviutlの[ファイル] > [環境設定] > [システムの設定]から、最大画像サイズの縮小やキャッシュフレーム数の削減などにより使用メモリ量を減らすことをご検討ください。

了解です!

了解いたしました!
ご丁寧な対応、本当にありがとうございました!

NVEncCでhevc

素晴らしいソフトをありがとうございます。高速エンコードが期待できるのでNVEncCを是非とも利用させていただきたいと思っています。
tsファイルをtrimで必要部分を抽出し、ロゴ除去したものをHEVC 10bitエンコードしたいのですが、ロゴが除去されず(--codec h264では除去できます)、フレームレートも27fpsなど不安定な値のファイルが生成されます。--avsync forcecfrを使えば29.970 fpsに固定できるのですがtrimと両立できません。
そこでavs(L-smash worksでtsファイルを読み込んでロゴ除去とtrim実施)ファイルを--avsで直読みしたり、avs2pipemodからy4mでパイプ渡ししたのですが、エンコードできませんでした。何か打開策はありませんでしょうか?以下にご参考のためログを添付します。よろしくお願いいたします。

--avsで直読みの場合
噎?? 3.14 (x86)
OS Windows 7 x64 (7601)
CPU Info Intel Core i5-3570K @ 3.40GHz [TB: 4.20GHz] (4C/4T)
GPU Info Intel(R) HD Graphics 4000 (16 EU) @ 1400 MHz (10.18.10.4653)
Loaded nvEncodeAPI.dll.
nvEncodeAPICreateInstance: Success.
cuInit: Success.
cuDeviceGetCount: Success.
cuDeviceGet: Success.
NVENC capabilities: OK.
using cuda schdule mode: sync.
cuCtxCreate: Success.
cuCtxPopCurrent: Success.
cuvidInit: Success.
cuvidCtxLockCreate: Success.
InitCuda: Success.
InitDevice: Success.
Performace Monitor: none
Performace Plot : none
NvEncOpenEncodeSessionEx: Success.
avs reader selected.
InitInput: input selected : 4.
avs: opened avs file: "エンコ前.avs"
avs: found video from avs file, pixel type 0xa0000010.
avs: Avisynth 2.60(yv12)->p010 [AVX], 1920x1080, 30000/1001 fps
InitInput: Success.
createDeviceFeatureList: Success.
InitDecoder: Success.
InitFilters: Success.
Max B frames are 0 frames.
SetInputParam: Success.
m_pEncodeAPI->nvEncInitializeEncoder: Success.
CreateEncoder: Success.
AllocateIOBuffers: Success.
Output: Using avformat writer.
Output: Audio/Subtitle muxing enabled.
Output: CopyAll=true
avout: output format specified: mp4
avout: output filename: "R:\エンコ後.mp4"
avout: failed to assume format from output filename.
avout: please set proper extension for output file, or specify format using option --format.
avout: Please use --check-formats to check available formats.
Failed to open output file: "R:\エンコ後.mp4"
avs: Closing...
[AVIOContext @ 0101fc40] Statistics: 5820560 bytes read, 3 seeks
[AVIOContext @ 091d95a0] Statistics: 6639760 bytes read, 3 seeks
avs: Closed.
avs: Closing...
avs: Close...
avout: Closing...
avout: closed queues...
avout: Closed format.
avout: Closed video.
avout: Closed.
Closing perf monitor...
--------------------------------------------------------------------------------
y4mでパイプ渡しの場合
噎?? 3.14 (x64)
OS Windows 7 x64 (7601)
CPU Info Intel Core i5-3570K @ 3.40GHz [TB: 4.20GHz] (4C/4T)
GPU Info Intel(R) HD Graphics 4000 (16 EU) @ 1400 MHz (10.18.10.4653)
Loaded nvEncodeAPI64.dll.
nvEncodeAPICreateInstance: Success.
cuInit: Success.
cuDeviceGetCount: Success.
cuDeviceGet: Success.
NVENC capabilities: OK.
using cuda schdule mode: sync.
cuCtxCreate: Success.
cuCtxPopCurrent: Success.
cuvidInit: Success.
cuvidCtxLockCreate: Success.
InitCuda: Success.
InitDevice: Success.
Eanble NVML Monitoring
Performace Monitor: none
Performace Plot : none
NvEncOpenEncodeSessionEx: Success.
raw/y4m reader selected.
InitInput: input selected : 2.
y4m: output to stdout.
y4m: y4m(yv12)->p010 [AVX], 1920x1080, 30000/1001 fps
InitInput: Success.
createDeviceFeatureList: Success.
InitDecoder: Success.
InitFilters: Success.
Max B frames are 0 frames.
SetInputParam: Success.
m_pEncodeAPI->nvEncInitializeEncoder: Success.
CreateEncoder: Success.
AllocateIOBuffers: Success.
Output: Using avformat writer.
avout: output format specified: mp4
avout: output filename: "R:\エンコ後.mp4"
avout: allocated internal buffer 8 MB.
avout: set external output buffer 8 MB.
avout: output video stream fps: 30000/1001
avout: opened video avcodec
avout: output video stream timebase: 1001/30000
avout: bDtsUnavailable: off
avout: Initialized video output.
avout: avwriter: hevc => mp4
avout: starting output thread...
Output: Initialized avformat writer.
InitOutput: Success.
NVEncC (x64) 3.14 (r553) by rigaya, Jul 5 2017 21:45:40 (VC 1900/Win/avx2)
OS Version Windows 7 x64 (7601)
CPU Intel Core i5-3570K @ 3.40GHz [TB: 4.20GHz] (4C/4T)
GPU #0: GeForce GTX 1050 (5 EU) @ 1518 MHz (384.76)
NVENC / CUDA NVENC API 8.0, CUDA 9.0, schedule mode: sync
Input Buffers CUDA, 36 frames
Input Info y4m(yv12)->p010 [AVX], 1920x1080, 30000/1001 fps
AVSync forcecfr
Vpp Filters copyHtoD
Output Info H.265/HEVC main10 @ Level auto
1920x1080p 1:1 29.970fps (30000/1001fps)
avwriter: hevc => mp4
Encoder Preset quality
Rate Control VBRHQ
Bitrate 3000 kbps (Max: 11520 kbps)
Target Quality auto
Initial QP I:20 P:23 B:25
VBV buf size auto
Lookahead on, 10 frames, Adaptive I, B Insert
GOP length 300 frames
B frames 0 frames
Ref frames 3 frames, LTR: off
AQ off
CU max / min auto / auto
Others mv:auto

Flushed Encoder
avout: Closing...
avout: closed output thread...
avout: closed queues...
avout: Closed avformat context.
avout: Closed File Pointer.
avout: Closed format.
avout: Closed video.
avout: Closed.
y4m: Closing...
y4m: Close...
encoded 0 frames, 0.00 fps, 0.00 kbps, 0.00 MB
encode time 0:00:00, CPULoad: 0.0%
avout: Closing...
avout: closed queues...
avout: Closed format.
avout: Closed video.
avout: Closed.
Closing perf monitor...

Re: NVEncCでhevc

すみません、delogoを10bitで使うことを想定していなかったので、正常に動作していないようです…。申し訳ありませんが、いまのところはavs側でdelogo処理するのが回避策になるかと思います。
プロフィール

rigaya

Author:rigaya
アニメとか見たり、エンコードしたり。
連絡先(@を半角にしてください!)
rigaya34589@live.jp
github

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

○Aviutlプラグイン
x264guiEx 2.xx (ミラー)
- x264を使用したH264出力
- x264guiExの導入>
- x264.exeはこちら>

x265guiEx (ミラー)
- x265を使用したH.265/HEVC出力
- x265.exeはこちら>

QSVEnc + QSVEncC (ミラー)
- QuickSyncVideoによるH264出力
- QSVEncCはコマンドライン版
- QSVEncC 導入/使用方法>
- QSVEncCオプション一覧>

NVEnc + NVEncC (ミラー)
- NVIDIAのNVEncによるH264出力
- NVEncCオプション一覧>

VCEEnc + VCEEncC (ミラー)
- AMDのVCEによるH.264出力

ffmpegOut (ミラー)
- ffmpeg/avconvを使用した出力

自動フィールドシフト (ミラー)
- SSE2~AVX2による高速化版
- オリジナル: aji様

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

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

PMD_MT (ミラー)
- SSE2~FMA3による高速化版
- オリジナル: スレ48≫989氏

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

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

○その他
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 (ミラー)

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

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

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