hevc_nvencで2passエンコードをやろうと思いffmpegOutを使ってるのですが、どうしても速度が出ません(speedが1.95xほど)これを早くする方法などはありますか?GPUはGTX1080です
音声エンコーダにはqaac 128kbps
映像オプションには-vcodec hevc_nvenc -b:v 5M と入れています
あとなぜかGPUでエンコードをしているはずなのに2pass目ですらcpuが100%で稼働し続けてます
わたしはhevc_nvencのは使用したことがないので、hevc_nvencがどのくらいの速度が出るのかはわかりませんが、1.95xというと60fpsぐらい(?)なので、やや遅いのかもしれません。
なお、NVEnc.auoではGTX1060を使って1080pをエンコードすると100fps前後でした。
CPU稼働率が高いのであれば、そちらがボトルネックになっている可能性が高いと思います。読み込み(デコード)やフィルタ等をチェックされてみてはいかがでしょうか。
OneDriveのDownload linkがVCEEncのものに差し替わっていませんか?
ありがとうございます、修正しました。
コマンドに -acodec copy 指定をしないと音声が2度エンコードされます。
1.音声エンコーダで指定したエンコード(当方qaac 160kbps)
2.ffmpegのデフォルトで音声エンコード(128kbps, 音声有効オプションON)
デフォルトで-acodec copy 指定は付けられないでしょうか
ご指摘のとおり、qaac等でエンコードした場合については、-acodec copyを指定しないと音声が2度エンコードされることになってしまいます。
一方で、Aviutlではwav出力を行い、ffmpeg側で音声エンコードすることも考えられますし、その際には-acodecで指定することになります。
コマンドについては、-acodecも含めてご自身で設定いただく、ということでご理解ください。付属のプロファイル等でもqaacを使用するものについては、そのように指定しており、使用例としてお示ししているかと思います。
ニッチな要望で申し訳ないのですが、
ffmpegOutから、パイプでNVEncCに出力を渡すようなコマンドを受け付けられるようにして頂くことは可能でしょうか。
現状ではコマンド欄に
-f yuv4mpegpipe - | "C:\Program Files\NVEncC\x64\NVEncC64.exe" --y4m -i - -o
と入力すると、ログに
-f rawvideo -s 1920x1080 -pix_fmt nv12 -r 24000/1001 -i "-" -f yuv4mpegpipe - | "C:\Program Files\NVEncC\x64\NVEncC64.exe" --y4m -i - -o -y "D:\output.mkv"
というコマンドが現れ、
Unrecognized option '-y4m'.
Error splitting the argument list: Option not found
というエラーが出て、動画が出力されません
FFmpegで加工したものに対し、NVEncCの機能を利用したいのですが、yuv4mpegpipeで渡せるようになれば
x264やx265、aomenc等のNVEncC以外にも利用の幅が広がるかと思います。
どうかご検討の程を宜しくお願いします。
現状のffmpegプロセスの起動とそこへのパイプ接続の実装の都合上、さらに別のプロセスにパイプをつなぐのはかなり改変を伴ってしまい、簡単ではなさそうです。
"|"記号でパイプを使ってプロセス同士をつなぐ機能はコマンドプロンプト(cmd.exe)等のシェルの機能なので、ffmpeg.exeを直接起動する現行のffmpegOutの仕組みでは使用できず、やろうとするとさらにパイプをつなぐところを書かないといけない気がします。
一方、cmd.exe経由でffmpegを起動しようとすると、今度はAviutlとの接続が厄介になってしまいます…。
なるほど、簡単ではないのですね…
ちょっと投げるコマンドを変えればいい程度の変更で済むかと思っていました…
個人的には、AviutlではLookUp Tabelを適用するフィルタがどう探しても見当たらないので
FFmpegでやろうかなと思い、こういうお願いをした所存でした。
妙な要望を出してしまい、申し訳ありません。