LoginSignup
2
1

More than 3 years have passed since last update.

ffmpeg で NVEnc を使って複数ファイルを出力しようとしたら "No NVENC capable devices found" と怒られる件(賢い対応策は今のところなし)

Last updated at Posted at 2021-04-17

やりたいこと

シングルビットレートの MP4 ファイルを、5 つの異なるビットレートにトランスコードしたい。

環境

  • Windows 10 Version 20H2
  • ffmpeg version 4.2
  • NVIDIA GeForce RTX 2060
    • Driver Version : 27.21.14.5774

愚直にやるなら

各ビットレート毎に、コマンドライン引数のビットレートの設定を変えて ffmpeg を実行すればよい。

CPU エンコード版

ffmpeg -i 入力ファイル.mp4 -vb ターゲットのビットレート 出力ファイル.mp4

NVEnc 利用版

ffmpeg -i 入力ファイル.mp4 -vcodec h264_nvenc -vb ターゲットのビットレート 出力ファイル.mp4

一回のコマンド実行で複数の出力を得る方法

ffmpeg のコマンドの書式は以下のようになっており、入力と出力は基本的には好きなだけ追加できる(はず)。

ffmpeg (グローバルオプション) (入力Aオプション) (入力A) (出力1のオプション) (出力1) ....

なので、こんな感じで出力を連結して入力してみた。

ffmpeg -i 入力ファイル.mp4 -vcodec h264_nvenc -vb 2000k 出力ファイル1.mp4 -vcodec h264_nvenc -vb 1500k 出力ファイル2.mp4 -vcodec h264_nvenc -vb 1000k 出力ファイル3.mp4 -vcodec h264_nvenc -vb 750k 出力ファイル4.mp4 -vcodec h264_nvenc -vb 500k 出力ファイル5.mp4

これで上手くいくかと思いきや、出力ファイルが 4 つ以上になると怒られる。

[h264_nvenc @ 000001f885d9c380] OpenEncodeSessionEx failed: out of memory (10)
[h264_nvenc @ 000001f885d9c380] No NVENC capable devices found
Error initializing output stream 3:0 -- Error while opening encoder for output stream #3:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

原因調査

色々調べてみたところ、NVENC に同時に張れるセッション数に制限があるようだ、ということは分かった。

Nvidia Nvenc Video Conversion from mxf to mp4 getting error for multiple streams inside

とりうる手段としては、エンコードするストリームを明示的に指定するか、パッチを当ててセッション数のリミットを上書きしなければいけないらしい。

結果

今回どちらの対応策も取れなかったため、ビットレート毎に別々にコマンドを発行する形で結局落ち着いた。
(もっといい方法があるよ!という方いらっしゃったら教えてください…。)

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1