Я вижу поддержку NVIDIA NVENC в этом документе, но это кажется странным, какой-то шаг за шагом? или PPA с ffmpeg-nvenc для убунту?
Я вижу поддержку NVIDIA NVENC в этом документе, но это кажется странным, какой-то шаг за шагом? или PPA с ffmpeg-nvenc для убунту?
Ответы:
Как всегда в случае с FFmpeg, постоянное развитие много раз меняет цели, и это, безусловно, верно для nvenc и FFmpeg. Там было 3 этапа:
Требуются два шага:
1. Установите пакет nv-codec-headers :
Что-то вроде следующих команд терминала должно быть достаточно:
sudo apt-get install make git
mkdir $HOME/nv-codec-headers_build && cd $HOME/nv-codec-headers_build
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make && sudo make install
Если по какой-то причине вы передумали и хотите полностью удалить установленные файлы, а также каталог сборки, просто выполните следующие две команды терминала:
sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build
И ваша система была очищена. Однако, если вы хотите продолжить, используйте следующий шаг:
2. Скомпилируйте FFmpeg :
Используйте это очень хорошо проверенное руководство:
Будет nv-codec-headers
автоматически распознаваться (дополнительные ./configure
параметры не требуются), и nvenc будет успешно собран.
Тестирование:
Я проверил это на Bionic Beaver LTS и получил следующие результаты:
andrew@ilium:~$ ffmpeg -encoders 2>/dev/null | grep nvenc
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)
andrew@ilium:~$
И если вы видите изображение, похожее на приведенное выше, и у вас есть поддерживаемая видеокарта , вы правы :)
Примечания:
@ andrew.46 твой ответ отличный, спасибо. Моя репутация ниже порога, чтобы оставить это как комментарий. Если возможно, пожалуйста, дополните свой ответ следующей информацией.
Если вам необходимо вернуться к более ранней версии nv-codec-headers
, загрузите и скомпилируйте более раннюю версию с https://github.com/FFmpeg/nv-codec-headers/releases .
Это может быть необходимо, если вы компилируете ffmpeg
с последней nv-codec-headers
версией, но ваш графический драйвер имеет версию, которая еще не обрабатывает минимальную версию CUDA API, требуемую nv-codec-headers
. Симптомом будет то, что ffmpeg
не удастся перекодировать видеопотоки. В моем случае nv-codec-headers
требуется CUDA API 9.1, в то время как последняя nvidia-driver
версия для моего дистрибутива (тестирования) все еще была в версии, использующей 9.0.
Возврат к более ранней версии, nv-codec-headers
вероятно, более безопасен, чем загрузка последней версии драйвера непосредственно из Nvidia и сборка его вне механизма обновления вашего дистрибутива.