Одной из ресурсоемких задач являетя кодирование и обработка видео. В виду этого производители при выпуске новинок своих продуктов, часто ссылаются на то что на их оборудовании время кодирования и обработки видео меньше. С недавних пор данные операции выполняют не только за счет ресурсов процессора  CPU, а есть возможность использовать GPU мощности графического процессора.

Принцип создания современных графических процессоров, позволяет выполнять задачи быстрее, запуская их параллельными процессами.

Самыми мощными на данный момент считаются NVIDIA и AT, выполняют 1 TFLOPs. Было бы странно, что разработчики оставили бы без внимания такие ресурсы, и не использовали их для обработки видео.

CUDA (Compute Unified Device Architecture) — программно-аппаратная архитектура параллельных вычислений, благодаря, которой можно увеличить производительность вычислений используя графические процессоры производителя Nvidia.

Как отличаются результаты при кодировании на процессоре и на видеокарте с использованием Nvidia CUDA.

Для установки специализированного ПО, установим необходимое програмное обеспечение:
apt-get install -y libtheora-dev libwavpack-dev libwavpack1 libxvidcore-dev libxvidcore4 libvorbis-dev libopenal-dev librtmp-dev rtmpdump sox libsox-dev libsox-fmt-all libsox2 libsoxr-dev libsoxr-lsr0 libvpx-dev libvpx4 libopus-dev libmp3lame-dev x265 libx265-dev x264 libx264-dev git vdpau-driver-all mesa-vdpau-drivers vdpau-va-driver libvdpau-dev vdpauinfo libva-dev vainfo ocl-icd-opencl-dev opencl-headers yasm autoconf automake build-essential libass-dev libfreetype6-dev libsdl2-dev libtool libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
Далее скачиваем само ПО
wget https://developer.download.nvidia.com/compute/cuda/9.2/secure/Prod/local_installers/cuda_9.2.88_396.26_linux.run
chmod +x cuda_9.2.88_396.26_linux.run
uname -a
apt install linux-headers-4.9.0-6-amd64

Запускаем установку

./cuda_9.2.88_396.26_linux.run

Скачиваем и устанавливаем кодек

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/
make
make install

Выполняем натсройку

echo /usr/local/cuda-9.2/lib64/ > /etc/ld.so.conf.d/cuda.conf
ldconfig

Скачиаваем и устанавливаем FFmpeg

git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg

cd ffmpeg/
./configure --prefix="/usr" --enable-shared --extra-cflags=-I/usr/include --extra-cflags=-I../nvidia/cudautils --extra-ldflags=-L../nvidia/cudautils --enable-nonfree --enable-gpl --enable-version3 --enable-avresample --enable-avisynth --enable-openal --enable-opencl --enable-opengl --enable-libnpp --enable-nvenc --enable-cuda --enable-vaapi --enable-vdpau --enable-libx264 --enable-libx265 --enable-libxvid --enable-libass --enable-libwavpack --enable-libsoxr --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx

После установки и настройки ПО проведем тесты

Тестирование кодирования видео с использованием процессора
ffmpeg -i 1.mp4 -vcodec libx264 -b:v 7000k -tune film -profile:v baseline -level 3.0 -vf format=yuv420p -threads 0 -movflags faststart -s 1280x720  -acodec copy -preset slow 1_1080.mp4
Время: 12m 19s

Тестирование кодирования видео с использованием видеокарты

ffmpeg -i 1.mp4 -c:v h264_nvenc -preset slow -profile:v baseline -vf format=yuv420p -threads 0 -movflags faststart -an -b:v 7M -s 1280x720 -acodec copy 1_1080.mp4
Время: 1m 28s

Исходя из проведенных тестов, кодирование с использованием процессора заняло чуть больше 12 минут, в тоже время с использование видеокарты чуть больше минуты. Можно сделать вывод, что производительность кодировки видео на видеокарте GPU в 12 раз быстрее чем на процессоре CPU.

Нужна настройка, обращайтесь [email protected]