#CentOS 8 に #ffmepg と #cuda を入れて #nvenc (ハードウェアエンコード)を試す
Geforce GTX 1050 Tiを差した物理マシンを組み立てたのでffmpegでハードウェアエンコードを試してみるテスト。
1)NVIDIAのドライバを入れる
NVIDIA DRIVERS Linux x64 (AMD64/EM64T) Display Driver
ダウンロードして実行するだけなのだが「nouveau」というカーネルモジュール(OSSなディスプレイドライバ)が動いていると入らない。Xを入れると普通に動いているのではないかと。
停止するためにはrunlevelを3にしてnouveauをブラックリストに載せてDracutして再起動するという手間がかかる。なおインストール時にkernel moduleがmakeされるのでgccはもちろんkernel-devel kernel-headers辺りも必要になる。
2)CUDAを入れる
CUDA Toolkit 10.1 Update 2 Download | NVIDIA Developer
ドライバが入る条件が整っている or 既にドライバが入っていればすんなりいく。runfile(local)は最初にドライバも入れてくれる感じ。rpm(local)はドライバは入れてくれない感じ。
3)ffmpegをパッケージで入れる
How To Install FFmpeg on CentOS 8 - idroot
EPELのパッケージで「hevc_nvenc」にも「h264_nvenc」にも対応してるffmpegが入る。makeしなくて済むの有難い。
おまけ)ffmpegをパイプでつなげると面白い
sshとパイプを使ってWindowsからLinuxのエンコーダを活用する、、などという事もできる。
ffmpeg.exe -i src.mp4 -c:v copy -c:a copy -f mpegts pipe:1 | ssh.exe /usr/bin/ffmpeg -i pipe:0 -c:v hevc_nvenc -c:a copy -f mpegts pipe:1 | ffmpeg.exe -i pipe:0 -c:v copy -c:a copy -f mp4 dst.mp4
この方法だとファイルコピーだのディスクのマウントだのをしなくても良いので意外と重宝するのである。