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に合わせ更新。

この一覧の見方



-<短縮オプション名>、--<オプション名> <引数>
引数なしの場合は単体で効果を発揮。

引数のタイプは
<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読み込み。
 - libavformatとcuvidによるHWデコードを使用して読み込む。
 - GPUのHWデコードを使用するため、最も高速。
 - cuvidでデコード可能なフォーマットのみ対応。

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


・avs(Avisynth)読み込み。
 - YV12に対応。直接読み込むので高速。


・vpy(VapourSynth)読み込み。
 - YV12に対応。直接読み込むので高速。

・yv12のraw形式かy4m(YUV4MPEG2)形式。
 - raw形式の場合、入力解像度、入力fpsの指定は必須。

出力はH.264/AVC Elementary Stream(ES)のみとなります。エンコード終了後、muxerを使用してmp4やmkvなどのコンテナに格納してください。


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

avcuvid読み込み(cuvidデコード使用)の例 (インタレ保持)
NVEncC --avcuvid --interlaced 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を指定する。(デフォルト:0)

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

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

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

入力フォーマットをしてしない場合は、拡張子で自動的に判定されます。
判定できない場合、raw形式として読み込みます。

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

--y4m
入力をy4m(YUV4MPEG2)形式に変更する。
入力解像度、入力fpsの設定が不要になる。

--avs
入力ファイルをAvisynthで読み込む。
入力解像度、入力fpsの設定が不要になる。

--vpy
入力ファイルをVapourSynthで読み込む。
入力解像度、入力fpsの設定が不要になる。

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

--avsw
avformat + sw decoderを使用して読み込む。
入力解像度、入力fpsの設定が不要になる。
ffmpegの対応するほとんどのコーデックを読み込み可能。

--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などのときに音ズレしてしまう際に使用。

--tff
--bff
入力をインターレースであると設定し、--vpp-deinterlaceによりQSVEncC内でのインタレ解除を行ったり、そのままインタレ保持エンコードを行う。

--crop <int>,<int>,<int>,<int>
左、上、右、下の切り落とし画素数。
avcuvid reader使用時は左cropは無効なことに注意してください。

--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)

--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 <int>
VBRモード使用時の目標品質を設定する。(0-51, 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ではあまり増やしても品質は向上しない。

--enable-ltr
LTR(Long Term Reference pictures)を有効にする。

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

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

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

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

--output-depth <int> (8 or 10)
出力ビット深度を指定する。(10bitはHEVCのみ)

--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


--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
--colorprim <string>
  undef, bt709, smpte170m, bt470m, bt470bg, smpte240m, film
--transfer <string>
  undef, bt709, smpte170m, bt470m, bt470bg, smpte240m, linear, log100, log316
各種フラグの設定。

--interlaced <string> tff, bff
入力をインタレとしてエンコードを行う。--vpp-deinterlaceと組み合わせてインタレ解除をするか、そのままインタレ保持エンコードを行う。(インタレ保持エンコードはH.264のみ)

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

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

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

--lossless [H.264のみ]
ロスレス出力を行う。自動的に--profile high444が指定される。(デフォルト: オフ)

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

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

--output-buf <int>
出力バッファサイズを指定するオプションを追加。(--output-buf)
出力バッファサイズを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に制限)



VPPオプション



--vpp-perf-monitor
エンコード終了時に各フィルタの平均所要時間を表示する。これを使用するとエンコード全体としては若干遅くなるので注意。

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

--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-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>。




スポンサーサイト

コメントの投稿

非公開コメント

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

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

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
プロフィール

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