Como sempre acontece com o FFmpeg, o desenvolvimento contínuo desloca os postes de meta muitas vezes e isso é certamente verdade para o nvenc e o FFmpeg. Houve 3 fases:
- Crie sua própria : no dia 27 de agosto de 2016, foi necessário rastrear seus próprios cabeçalhos para criar o nvenc. Doloroso e mais do que um pouco confuso.
- Criada na origem : em 27 de agosto de 2016, os cabeçalhos exigidos incorporado como parte da fonte do FFmpeg , nada é necessário, mas a capacidade de compilar a fonte do FFmpeg a partir do git, ou usar uma versão 'release' do git neste momento.
- Use cabeçalhos nv-codec : em 26 de fevereiro de 2018, os cabeçalhos da NVidia eram removido da fonte do FFmpeg . Um repositório git separado foi criado para manter o trabalho contínuo com esses cabeçalhos . No momento, esses cabeçalhos devem ser instalados assim como FFmpeg do git para ter acesso a nvenc e amigos.
São necessários dois passos:
1. Instale o pacote nv-codec-headers :
Algo como os seguintes comandos do Terminal deve ser suficiente:
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
Se por algum motivo você mudar de ideia e desejar remover completamente os arquivos instalados, bem como o diretório de compilação, simplesmente execute os dois comandos do Terminal a seguir:
sudo rm -v /usr/local/{lib/pkgconfig/ffnvcodec.pc,include/ffnvcodec/*.h}
rm -rfv $HOME/nv-codec-headers_build
E o seu sistema foi limpo. Se, no entanto, você quiser continuar, use o seguinte passo:
2. Compile FFmpeg :
Use este guia muito bem testado:
- Compile o FFmpeg no Ubuntu, Debian ou Mint Review link
O nv-codec-headers
será reconhecido automaticamente (nenhuma opção ./configure
extra será necessária) e o nvenc será criado com sucesso.
Teste:
Eu testei isso no Bionic Beaver LTS e os resultados são:
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:~$
E se você vir uma imagem semelhante à acima, e tiver uma placa gráfica bem suportada, você está certo:
Notas:
- Não há diferença entre
hevc_nvenc
envenc_hevc
: as variantesnvenc_*
são os nomes legados antigos. - Você pode visualizar opções específicas para cada codificador. Por exemplo,
ffmpeg -h encoder=h264_nvenc
. - Guia de Aceleração de Hardware para o FFmpeg : Guia FFmpeg Wiki para aceleração de hardware em geral com o FFmpeg, uma seção canônica para compilando e usando o nvenc ...