Ubuntuでのハードウェアエンコード環境構築作業は先月18日、24日とGStreamer+VAAPIにトライしたもののまだ先が長そうだ。
とはいえGT110bにもひと月分の録画済みファイルが溜まってしまったので、気分転換も兼ねてCUDA改めNVENCを試してみることに。
まずはGT710なMSI GT710 1GD3H LPを突っ込んで、libcudaとnvidiaドライバをインストール。
yano@haswell:~$ sudo apt-get install libcuda1-367 nvidia-367 nvidia-367-devnvidiaドライバと喧嘩するらしいnouveauをblacklistに登録して再起動。 続いてCompilationGuide/Ubuntuを読みながら、ffmpegのインストール。と思ったが、気まぐれに"ffmpeg -encoders"を見たところ、"NVIDIA NVENC H.264 encoder"が有効になっている事に気付いた。
yano@haswell:~$ ~/bin/ffmpeg -encoders 2>&1 | grep NVIDIAダメ元で
V..... h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc_h264 NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc_hevc NVIDIA NVENC hevc encoder (codec hevc)
V..... hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)
yano@haswell:~$
yano@haswell:~$ ~/bin/ffmpeg -i input.ts -vcodec h264_nvenc ouput.mkvてな感じで動かしたところ、あっさりエンコードできたっぽい。まだチューニングの余地はあるものの
yano@haswell:~$
yano@haswell:~/cuda$ ~/bin/ffmpeg -y -i ./20161215_0012_28_GRhd.ts \というところでスピードと画質はQSV(VAAPI)と遜色なく、エクスプローラーでの詳細情報で時間などが表示されない問題も無い事から、早速GT110bへの展開を決定。
-threads 2 -vcodec h264_nvenc -deinterlace -preset medium \
-profile:v high -cq 26 -b:v 2.5M -filter:v yadif -s hd720 \
-acodec aac -ac 2 -ar 48000 -ab 128k -map 0:0 -map 0:1 \
-f mp4 ./20161215_0012_28_GRhd.mp4
yano@haswell:~/cuda$
GT710なMSI N730K-1GD5LP/OCV1をGT110bに突っ込んで、libcudaとnvidiaドライバをインストール。
yano@GT110b:~$ sudo apt-get install yasm libx264-dev libfdk-aac-dev libmp3lame-devで、ffmpegのbuild。
yano@GT110b:~$ sudo apt-get install libcuda1-367 nvidia-367 nvidia-367-dev
yano@GT110b:~$ tar xvf ffmpeg-3.2.2.tar.bz2↓でエンコーダオプションが確認できれば(恐らく)OK。
yano@GT110b:~$ cd ~/ffmpeg-3.2.2/
yano@GT110b:~/ffmpeg-3.2.2$ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" \
./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static"
--extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac \
--enable-libfreetype --enable-libmp3lame --enable-libtheora --enable-libvorbis \
--enable-libx264 --enable-nonfree
yano@GT110b:~/ffmpeg-3.2.2$ PATH="$HOME/bin:$PATH" make
yano@GT110b:~/ffmpeg-3.2.2$ make install
yano@GT110b:~/ffmpeg-3.2.2$ make distclean
yano@GT110b:~/ffmpeg-3.2.2$ hash -r
yano@GT110b:~$ ~/bin/ffmpeg -encoders 2>&1 | grep NVIDIA
V..... h264_nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc_h264 NVIDIA NVENC H.264 encoder (codec h264)
V..... nvenc_hevc NVIDIA NVENC hevc encoder (codec hevc)
V..... hevc_nvenc NVIDIA NVENC hevc encoder (codec hevc)
yano@GT110b:~$
yano@GT110b:~$ dpkg -l | grep "^ii" | grep -e "nvidia" -e "cuda"CUDA 6.5をごにょごにょしてたらgnome-desktop環境まで入れられてしまったので、消しておく。
ii cuda-command-line-tools-6-5 6.5-19 amd64 CUDA command-line tools
ii cuda-core-6-5 6.5-19 amd64 CUDA core tools
ii cuda-cublas-6-5 6.5-19 amd64 CUBLAS native runtime libraries
ii cuda-cublas-dev-6-5 6.5-19 amd64 CUBLAS native dev links, headers
ii cuda-cudart-6-5 6.5-19 amd64 CUDA Runtime native Libraries
ii cuda-cudart-dev-6-5 6.5-19 amd64 CUDA Runtime native dev links, headers
ii cuda-cufft-6-5 6.5-19 amd64 CUFFT native runtime libraries
ii cuda-cufft-dev-6-5 6.5-19 amd64 CUFFT native dev links, headers
ii cuda-curand-6-5 6.5-19 amd64 CURAND native runtime libraries
ii cuda-curand-dev-6-5 6.5-19 amd64 CURAND native dev links, headers
ii cuda-cusparse-6-5 6.5-19 amd64 CUSPARSE native runtime libraries
ii cuda-cusparse-dev-6-5 6.5-19 amd64 CUSPARSE native dev links, headers
ii cuda-documentation-6-5 6.5-19 amd64 CUDA documentation
ii cuda-driver-dev-6-5 6.5-19 amd64 CUDA Driver native dev stub library
ii cuda-license-6-5 6.5-19 amd64 CUDA licenses
ii cuda-misc-headers-6-5 6.5-19 amd64 CUDA misc headers
ii cuda-npp-6-5 6.5-19 amd64 NPP native runtime libraries
ii cuda-npp-dev-6-5 6.5-19 amd64 NPP native dev links, headers
ii cuda-repo-ubuntu1404 6.5-14 amd64 cuda repository configuration files
ii cuda-samples-6-5 6.5-19 amd64 CUDA example applications
ii cuda-toolkit-6-5 6.5-19 amd64 CUDA Toolkit 6.5 meta-package
ii cuda-visual-tools-6-5 6.5-19 amd64 CUDA visual tools
ii libcuda1-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA CUDA runtime library
ii nvidia-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA binary driver - version 367.57
ii nvidia-367-dev 367.57-0ubuntu0.14.04.1 amd64 NVIDIA binary Xorg driver development files
ii nvidia-modprobe 361.93.02-0ubuntu1 amd64 Load the NVIDIA kernel driver and create device files
ii nvidia-opencl-icd-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA OpenCL ICD
ii nvidia-prime 0.6.2.1 amd64 Tools to enable NVIDIA's Prime
ii nvidia-settings 361.93.02-0ubuntu1 amd64 Tool for configuring the NVIDIA graphics driver
yano@GT110b:~$
yano@GT110b:~$ sudo apt-get remove gnome-desktop3-data
ちなみにHaswellだと、こう。
yano@haswell:~$ sudo apt-get install libxmu-dev freeglut3-devGT110bに入れちゃったCUDA 6.5は不要だったかも!?
yano@haswell:~$ sudo apt-get install libcuda1-367 nvidia-367-dev
yano@haswell:~$ dpkg -l | grep "^ii" | grep -e "nvidia" -e "cuda"
ii libcuda1-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA CUDA runtime library
ii nvidia-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA binary driver - version 367.57
ii nvidia-367-dev 367.57-0ubuntu0.14.04.1 amd64 NVIDIA binary Xorg driver development files
ii nvidia-opencl-icd-367 367.57-0ubuntu0.14.04.1 amd64 NVIDIA OpenCL ICD
ii nvidia-prime 0.6.2.1 amd64 Tools to enable NVIDIA's Prime
ii nvidia-settings 331.20-0ubuntu8 amd64 Tool for configuring the NVIDIA graphics driver
yano@haswell:~$
【参照】
●www.nodoka.org http://www.nodoka.org/
┣録画サーバ構築 QSVエンコード Linux編 2016年5月27日
┗録画サーバ構築 NVENCエンコード Linux編 2016年6月15日
●FFmpeg https://ffmpeg.org/
┗CompilationGuide/Ubuntu
●Wikipedia http://ja.wikipedia.org/wiki/
┣nouveau
┣LGA1150
┣Haswellマイクロアーキテクチャ
┣Broadwellマイクロアーキテクチャ
┣LGA1151
┗Skylakeマイクロアーキテクチャ