Kdenliveでハードウェアエンコードを使えるようにする

Kdenlive はフリーの動画編集ソフトの一つですが、ハードウェアアクセラレーションの使い方が非常に上手で長時間動画でも快適にプレビューが出来ます。

長時間動画のカット編集に限れば、有料ソフトにも負けず劣らずの使い心地。

しかし、基本的にLinuxに向けて作られているためWindowsだと最大限活かせない機能がいくつかあります。

その一つが ハードウェアエンコード 。GPUを使うことで爆速のエンコードができるのですが、安定しないということで使えません。

ハードウェアアクセラレーションのチェック

そもそもKdenliveがGPUを認識しているかを確認します。

  • 設定 を開く
  • 設定ウィザードの実行 を選択
  • Check hardware accelaration をクリック

ちゃんとGPUを認識している場合は、チェックボックスのどちらかにチェックが付きます。

おそらく画像のように「 No hardware encoders found 」と表示されます。

GPUを認識させる方法とは?

Shotcut & MLT
Shotcut & MLT

ここからが本題です。
Kdenliveではビデオエディターのエンジンに MLT というものを使っているのですが、同じくMLTを使った動画編集ソフトに「 Shotcut 」というものがあります。

そしてこのShotcut、Kdenliveでできなかったハードウェアエンコードを使えます。

うまく動いているShotcutのMLTffmpegだけをKdenliveに移植することで、ハードウェアエンコード機能を追加してみましょう。

やり方

Shotcutのインストール

リンクの書き換え

KdenliveのMLTffmpegのリンク先をshotcutのものに書き換えます。

  • Kdenliveを開く
  • 設定 → Kdenliveを設定 をクリック
  • Environment → MLT environment を開く
  • MLT profiles folder 以外のリンクをShotcutのものに変更

Cドライブにインストールしていれば、おそらく以下と同じになります。

FFmpeg C:/Program Files/Shotcut/ffmpeg.exe
FFplay C:/Program Files/Shotcut/ffplay.exe
FFprobe C:/Program Files/Shotcut/ffprobe.exe
Melt path C:/Program Files/Shotcut/melt.exe

MLT environment

これでKdenliveがGPUを認識するようになったはずです。

再度ハードウェアアクセラレーションのチェック

  • 設定 → 設定ウィザードの実行 を開く
  • もう一度GPUを認識しているかチェック

しっかりNvidiaのGPUを認識していますね。

ハードウェアエンコードを行う

レンダリング画面を開く

  • ツールバーの レンダリング をクリック
  • または上部メニューの Project → レンダリング をクリック
  • Format を下にスクロール
  • GPU|testing というグループを確認

最初からGPU向けの設定はあります。

ただ、どれもビットレートが高すぎたりCBRだったりとffmpegの設定がイマイチなので、新しくプロファイルを作ります。

プロファイルの設定

  • Format の右側にあるアイコンをクリック
  • 新規プロファイルの設定画面を開く
  • Profile name に適当な名前を入力
  • parameter に下のコードをコピペ
f=mp4 vcodec=hevc_nvenc rc=vbr_hq qmin=0 cq=30 acodec=aac ab=128k

nvencを使ってh265でエンコードしています。

cq の値を変えると画質を変更できます。 0~51 で指定し、値が小さいほど高画質・大容量です。

さらに細かく自分好みに設定したいときはこちらに様々なオプションが書かれています。
しかし、正直わかりにくいので本家ffmpegのhevc_nvenc.txtがオススメです。記述の仕方がちょっと違うんですが雰囲気でなんとなく分かると思います(適当)。

OKを押せば準備完了です。

エンコード

  • Output file に出力先とファイル名を指定
  • Render to File をクリック
  • エンコード開始

❌アイコンが表示される

Kdenliveを再起動した後などに、ハードウェア系のプロファイルに❌アイコンがついて Render to File ボタンが押せなくなることがあります。

デフォルトのWin版Kdenliveではハードウェアエンコードを使えなくしているのでこういったことが起きてしまいます。

その場合は以下で復活します。

  • 先ほど作ったプロファイルをダブルクリック
  • そのまま OK を押す
  • 再度使えるようになる

vs CPUエンコード

parameterhevc_nvenclibx265 に変更すると、CPUでエンコードするようになります。

この2つの設定で、時間や画質を比較してみます。

  • 元動画
  • 解像度: FHD
  • fps: 24
  • ビットレート: 4013
CPU (libx265) GPU (hevc_nevc)
時間(s) 36:15 3:02
サイズ(MB) 474 MB 686MB
ビットレート(kbps) 3186 kbps 4668kbps

CPU vs GPU

拡大比較
拡大比較

  • 処理速度 はGPUが圧倒的
  • h265はh264より処理負荷が高いため、普段使いならハードウェアエンコードがかなり楽
  • ビットレートが違うので、サイズや拡大画像の比較は参考程度
  • どちらも必要十分には見える

違いが出るのは、動画で見たときのビットレートの振り分けです。

  • CPUは安定感がある
  • 激しい場面から静かな場面への切り替えもスッと入る
  • GPUは ぼやけたシーンが後残り してしまう

私のグラボは gtx1060(Pascal系)なので使えませんが、20以降のTuring系なら Bフレーム なるものが使えるようで、より高画質なものが期待できます。