Widzę wsparcie dla NVIDIA NVENC w tym dokumencie, ale wydaje się to mylące, krok po kroku? czy PPA z ffmpeg-nvenc dla Ubuntu?
Widzę wsparcie dla NVIDIA NVENC w tym dokumencie, ale wydaje się to mylące, krok po kroku? czy PPA z ffmpeg-nvenc dla Ubuntu?
Odpowiedzi:
Jak zawsze w przypadku FFmpeg dalszy rozwój przesuwa cele wielokrotnie, co z pewnością jest prawdą w przypadku nvenc i FFmpeg. Były 3 fazy:
Wymagane są dwa kroki:
1. Zainstaluj pakiet nv-codec-headers :
Powinno wystarczyć coś takiego jak następujące polecenia terminala:
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
Jeśli z jakiegoś powodu zmienisz zdanie i chcesz całkowicie usunąć zainstalowane pliki, a także katalog kompilacji, po prostu uruchom następujące dwa polecenia Terminal:
sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build
Twój system został wyczyszczony. Jeśli jednak chcesz kontynuować, wykonaj następujący krok:
2. Skompiluj FFmpeg :
Skorzystaj z tego bardzo dobrze przetestowanego przewodnika:
nv-codec-headers
Zostanie automagicznie uznane (bez dodatkowych ./configure
potrzebne są opcje) i nvenc zostanie pomyślnie zbudowany.
Testowanie:
Przetestowałem to na Bionic Beaver LTS, a wyniki są następujące:
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:~$
A jeśli zobaczysz podobny obraz jak powyżej i masz obsługiwaną kartę graficzną , masz prawo iść :)
Uwagi:
@ andrew.46 Twoja odpowiedź jest świetna, dziękuję. Moja reputacja jest poniżej progu, aby opublikować to jako komentarz. Jeśli to możliwe, rozszerz swoją odpowiedź o następujące informacje.
Aby przywrócić wcześniejszą wersję nv-codec-headers
, pobierz i skompiluj wcześniejszą wersję ze strony https://github.com/FFmpeg/nv-codec-headers/releases .
Może to być konieczne, jeśli kompilujesz ffmpeg
z najnowszymi nv-codec-headers
wersjami, ale sterownik karty graficznej jest w wersji, która nie obsługuje jeszcze minimalnej wymaganej wersji interfejsu API CUDA nv-codec-headers
. Objawem będzie, że ffmpeg
nie uda się transkodować strumieni wideo. W moim przypadku nv-codec-headers
wymagałem CUDA API 9.1, podczas gdy najnowszy nvidia-driver
dla mojej dystrybucji (testowania) był nadal w wersji przy użyciu 9.0.
Powrót do wcześniejszej wersji nv-codec-headers
jest prawdopodobnie bezpieczniejszy niż pobranie najnowszego sterownika bezpośrednio z Nvidii i zbudowanie go poza mechanizmem aktualizacji dystrybucji.