Ubuntu20.04にhevc-qsvコーデックを実装する(前編)

2020年9月20日

この記事を読むと得られる情報

  • ハードウェアエンコードについての知識
  • エンコーダーについての知識
  • Ubuntu20.04へのh.264とhevcのハードウェアエンコーダーの導入方法

概要

UbuntuのCLI環境でも利用できる動画変換ソフト【ffmpeg】で動画変換を行おうとしたところ
デフォルトの環境ではh.265(以下、hevc)の計算をintelグラフィックアクセラレータを使用したIntel Quick Sync Video(以下、qsv)が実行できなかった。
その後環境構築をしたところ、いろんな箇所でハマったのでうまくいった方法をまとめた記事になります。

ハードウェアエンコードとは

通常、動画のエンコードはCPUの計算リソースを利用(以下、ソフトウェアエンコード)して行われます。
一方、ハードウェアエンコードはNVIDIAやAMDのグラフィックボードやIntel社製CPUに内臓されているグラフィックチップの計算リソースをFPGAのような専用回路として利用してエンコードを行うことである。

そんなハードウェアエンコードには下記のようなメリットとデメリットが存在する。

メリット

  • CPUリソースをメインで消費しないため、他の演算処理中にも実施ができる
  • 速度が桁違いに早い
  • 消費電力も大きく抑えられる

デメリット

  • ソフトウェアエンコードに比べ、画質は劣る可能性がある(ある程度回避可能)

今回はIntel CPUを用いたハードウェアエンコードであるQSV環境を構築していきます。
(NVIDIAのグラフィックボードを利用したNVENCなどは別途構築が必要となります)

コーデックについて

前項では「エンコード自体をどのリソースを使用して計算するのか」という点で様々な方法があるという話をしましたが、動画変換にはもう一つの要素であるコーデックについても検討しなければいけません。

様々なコーデックがあり、それぞれにメリット・デメリットがありますが今回は汎用性の高いmp4へ変換するh.264とhevcについて検討していきます。
h.264とhevcについての詳細は長くなるため、ここでは省略させていただきます。

とはいえ1点重要な注意事項があり、基本的に各コーデックをハードウェアエンコードで実施する場合はハードウェアが対応している必要があります。
具体的に言いますと
・h.264は第2世代以降のIntel CPU
・hevcは第7世代以降のIntel CPU
でないと使用することができません。

hevcはh.264の後継コーデックのため割と最近のIntel CPUが必要なのです。

hevc-qsvコーデック環境を構築

それでは環境構築に移りたいと思います。
まずは構築する環境の確認

  • CPU:Intel 10700T(TB無効)
  • RAM:64GB
  • OS:Ubuntu20.04

いよいよ構築していきます。
基本的にはコピペで構築可能かと思います。
(2020年9月20日編集:kay様アドバイスありがとうございました!)

次回に続く

これでffmpeg上でハードウェアエンコードが実行できるようになりました。

次回は今回導入したエンコーダーを利用したハードウェアエンコードの実行方法と、ソフトウェアエンコードとハードウェアエンコードの比較を行っていきます。

https://red-full-moon.com/make-hevc-qsv-env-latter-half/