・HEVCでもロスレス出力可能なように。なぜかできないよう制限がかかっていた。
※3.05に更新(2017.01.11) - 3.04で修正しきれてなかったので再度修正しました。一度動いたのは何だったんだ…? ともかく繰り返し更新してすみません。
ダウンロード>>ダウンロード (ミラー) >>OneDriveの調子がいまいちの時はミラー(GDrive)からどうぞ。同じものです。ソースはこちら>>
スポンサーサイト
2017-01-08(23:34) のtc2mp4mod.exeでmuxした者です。
お世話になっております。
mux失敗するセットを維持しておりましたので、3.05での
処理正常完了を確認しました。対応感謝致します。
NVEncはとにかく処理が速くで良いですね。
HEVCのエンコードをすると動画の解像度が変わってしまいます。
(例:ソース1280x720→出力1280x736)
自分の環境の問題でしょうか?一応報告させてください。
ドライバの要求バージョンって変わってますか?
今までは 375.63 のバージョンでも動作していたのですが、動作しなくなりました。一応報告まで。
>>HEVCのエンコードをすると動画の解像度が変わってしまう
720pのエンコードということですが、AviutlのNVEnc.auoの方でしょうか、NVEncCのほうでしょうか?
こちらで、NVEncCで720pエンコードした限りでは問題なかったのですが…。出力ファイルの解像度はMediaInfoで確認しました。
コマンド:
NVEncC64.exe -c hevc -i sakura_op.mp4 -o test.mp4
ログ抜粋:
Input Info avsw: hevc(yv12)->nv12 [AVX2], 1280x720, 30/1 fps
Vpp Filters copyHtoD
Output Info H.265/HEVC main @ Level auto
1280x720p 1:1 30.000fps (30/1fps)
avwriter: hevc => mp4
MediaInfo: (出力ファイル: test.mp4)
幅 : 1 280 ピクセル
高さ : 720 ピクセル
>>ドライバの要求バージョン
3.02からは369.30以降のつもりでしたが、正直動作の確認していません、すみません。こちらでは375.95で動作しています。
>>rigaya様
ファイルのプロパティが1280x736になっていた事と、WMPで再生した際に黒帯が追加されることから不具合と思い込んでしまいました。
MediaInfoでは1280x720になっており、MPC-BEでは黒帯無しで正常に再生出来ました。
大変失礼しました。
x64\NVEncC64.exe --avsw -c hevc --output-depth 10 -i <filename> -o <filename>
これをラムディスクに置いてドラッグアンドドロップで処理しようと思いましたがエラーが出ました・・・
batファイルを作ってドラッグアンドドロップで複数ファイルを連続処理させたい場合はどの様なバッチを作った方がよろしいのでしょうか?
エラーの内容によって対処が異なりますので、エラー内容を詳細に教えていただけないでしょうか?
報告が遅れましたが、本日リリースされた R376.53 (r376_38-2) で認識出来るようになしました。まだ、エンコードのテストはしておりませんが、おそらく大丈夫な感じです。やはり、この近辺のドライバのバージョンで何らかの仕様変更があったんですね。
x64\NVEncC64.exe --avsw -c hevc --output-depth 10 -i <filename> -o <filename>
これを本当にそのままバッチファイルを作ったのですが
コマンドプロンプトが一瞬開いてすぐに閉じました。
<filename>はそのままでもドラッグアンドドロップで対処できるのでしょうか?
なるほど…
そういう意味ですと、以下のようにしていただくと、ドラッグ&ドロップに対応できると思います。
x64\NVEncC64.exe --avsw -c hevc --output-depth 10 -i %1 -o "%~dpn1_encode.mp4"
ありがとうございます!
最初のプログラムの方をフルパス指定すれば出力できるようになりました!
初歩的な質問ですみません・・・
"C:\NVEncC\x64\NVEncC64.exe" -c hevc --sub-copy --tff -i %1 -o "D:\%~dpn1_encode.mp4"
・最も高速にH.265で出力したい
・固定品質の指定 RF 21 位
・字幕のコピー
・インタレース解除
・Dドライブに出力
・連続でエンコード(複数のドラッグアンドドロップ)
をしたいのですが上記であっておりますでしょうか?
複数のドラッグ&ドロップを連続処理したい場合はこんな感じでしょうか。またインタレ解除するには"--vpp-deinterlace normal"が必要です。
set NVENCC64_PATH=C:\NVEncC\x64\NVEncC64.exe
:run_encode
if "%~1" == "" goto end
"%NVENCC64_PATH%" -c hevc --sub-copy --tff --vpp-deinterlace normal -i %1 -o "D:\%~dpn1_encode.mp4"
shift
goto run_encode
:end
ありがとうございます!
固定品質での出力はどのようにコマンドを組めばよろしいのでしょうか?
CQPはありますが
RF21と同じようにするには24位なんでしょうか・・・?
Single Pass - quantizer-based(CQP)
動画全体の “ 品質 ” を指定しての 1 パス。 数値が小さいほど品質は向上する。
Single Pass - Ratefactor-based(CRF)
基本はCQP と同じだが、動きの激しい場面(人間がはっきりとは視認できない場面)をより圧縮し、その分動きの少ない場面(人間がはっきりと視認できる場面)の画質を上げる.
なので性質は違うようです
CRFのオプションはございますでしょうか・・・?
NVEncには固定品質というのはないので、CQPでやっていただくしかないと思います。
どのくらいの値がいいかに関しては、試行錯誤していただくしかないかと思います。デフォルトのCQP 20:23はそれなりの画質になる目安程度に思ってください。
ありがとうございます!
そうなると動きのあるシーンの有無で可変する
--vbr <int> (可変ビットレート)
--vbrhq <int> (可変ビットレート (高品質))
が一番いいかもしれません
上下の違いはエンコード速度だけでしょうか?
数分の違いだけなら高品質のほうがいいかもしれませんが・・・
最低1500 最大3000にしたい場合
set NVENCC64_PATH=C:\NVEncC\x64\NVEncC64.exe
:run_encode
if "%~1" == "" goto end
"%NVENCC64_PATH%" -c hevc --sub-copy --tff --vpp-deinterlace norma l--vbrhq 1500 --maxbitrate 3000 -i %1 -o "D:\%~dpn1_encode.mp4"
shift
goto run_encode
:end
で合っておりますでしょうか?
コマンドとしてはそれで問題ありません。
設定についてはいろいろ試してみてご自分で判断いただいたほうがいいと思います。
兼ねかね申し訳ございません
set NVENCC64_PATH=C:\NVEncC\x64\NVEncC64.exe
:run_encode
if "%~1" == "" goto end
"%NVENCC64_PATH%" -c hevc --sub-copy --tff --vpp-deinterlace normal -i %1 -o "D:\%~dpn1_encode.mp4"
shift
goto run_encode
:end
をそのまま使ってみましたがエンコードが開始されずそのまま終了してしまいました・・・
管理人さんの環境では如何でしたでしょうか?
すみません、出力ファイルのパスのところを間違えていました。(自分では"%~dpn1_encode.mp4"としていたので動いていました…)
set NVENCC64_PATH=C:\NVEncC\x64\NVEncC64.exe
:run_encode
if "%~1" == "" goto end
"%NVENCC64_PATH%" -c hevc --sub-copy --tff --vpp-deinterlace normal -i %1 -o "D:\%~n1_encode.mp4"
shift
goto run_encode
:end
これで動くかと思います。
注意点として、
・--sub-copyをつけるのは、入力ファイルに字幕のあるときのみにしてください。
・--vpp-deinterlaceが使えるのは入力ファイルのコーデックがH.264/MPEG2/MPEG1のときのみです。
いろいろありがとうございました!
さらなる高速化、高画質化が出来ることを祈ってます。
要望です。
指定したファイルサイズに抑えるように出来ませんか?
QSVEnc,NVEnc,VCEEncなどのハードウェアエンコーダには、目標のビットレートにきちんと収めるいわゆる2passのような処理は残念ながらできません。そのため、指定したファイルサイズに抑えるようなことは困難です。
現在はビットレート計算機を利用してビットレートを計算しています。
なので単純にファイルサイズ指定は出来そうだと思ったのですが。
よく考えてみたら時間とかフレームどうやって取得するの?
という問題がありますね。
最軽量設定で解像度1x1、1fpsとかそんな感じで
レンダリングすれば時間やフレーム数は取得できそうですけど。
(ちなみに、OBSで NVENCの2passが実装されていますが、レート制御方法を変更するだけでこれは「拡張 NVEnc Ex」では[高品質]として実装されています。)
x264guiExでは、
・2passでx264が精度良く指定したビットレートに合わせてくれること
・かつてのニコ動のようにファイルサイズの上限を確認する需要がありそうだったこと
という理由があって、ファイルサイズの上限を指定し、それを確認するオプションがありました。
QSVEncやNVEncではこの前述べたようにファイルサイズの上限にあわせるような用途に向きませんし、おっしゃるように、ビットレート計算機でおおまかなビットレートを計算することで、問題ないと考えています。
ありがとうございました。