Codificar arquivos de vídeo pode ser uma chatice. Mesmo com as CPUs mais rápidas do mercado, o processo pode demorar até quase tanto quanto o próprio vídeo (por exemplo, trinta minutos de codificação para um vídeo de trinta minutos). Não importa o que os programas de codificação ofereçam, eles são sempre limitados pelo poder de seus chips.
Para resolver esse problema, as placas NVIDIA têm um pequeno truque bacana que vêm usando desde o lançamento das placas de vídeo da série GeForce 600 em 2012, chamado NVENC. Isso permite que você use a GPU para codificar streams de vídeo. Usando o NVENC, você não apenas pode converter vídeos mais rapidamente do que com uma CPU convencional, mas também pode transmitir vídeo por meio de software como Open Broadcaster Software (OBS) enquanto reduz ou elimina completamente gagueira e lag. Já que o Linux não tem NVENC por padrão, você terá que fazê-lo funcionar manualmente. Eu explico aqui como você pode fazer isso em distribuições baseadas no Ubuntu.
Primeiras coisas primeiro
Para que o NVENC da NVIDIA funcione no Ubuntu, primeiro você precisa fazer o download do kit de desenvolvimento de software (SDK) do NVIDIA Video Codec em esse site. Você precisará fazer uma conta, mas o processo é bastante simples. Você não precisa de todos os arquivos no ZIP, então agora vamos navegar para “Samples / common / inc.” Copie tudo o que você vê lá para sua pasta “/ usr / local / include”. Você precisa copiar esses arquivos para que “ffmpeg” (um codificador freqüentemente encontrado em distros Linux) reconheça o NVENC e o incorpore.
Configurando Repositórios de Código Fonte
O próximo passo envolverá recompilar sua versão atual do ffmpeg. Isso significa que você vai precisar das dependências de compilação para o software e, para isso, terá que configurar o Linux para permitir o download de repositórios de código-fonte em suas fontes de software.
No Ubuntu, você pode navegar até “Configurações do sistema -> Software e atualizações” e, em seguida, clicar em “Código-fonte” em “Software Ubuntu”. No Linux Mint (a distribuição que estou usando porque sou preguiçoso), isso pode ser feito acessando o Gerenciador de atualização, clicando em “Editar”, clicando em “Fontes de software” e marcando a pequena caixa com “Ativar repositórios de código-fonte. ” Este método pode variar dependendo do seu ambiente de área de trabalho e distribuição do Linux, portanto, pode ser necessário fazer uma pequena busca profunda para fazer isso.
Agora vamos à parte de moer os dentes do processo!
Reconstruindo ffmpeg
Uma vez que o ffmpeg não constrói com muitas de suas opções ativadas automaticamente (significando que são quase todas opt-in em vez de opt-out), você terá que descobrir como ele foi construído em seu sistema e, em seguida, construí-lo usando o mesma configuração mais suporte para áudio NVENC e AAC. É aqui que entram os cabeçalhos que você copiou anteriormente. Veja, o ffmpeg dará uma olhada em seus arquivos em “/ usr / local / include” para encontrar qualquer codec que não encontre em seus próprios bolsos.
Primeiro, criamos dependências com
sudo apt-get build-dep ffmpeg
Em seguida, queremos baixar o codec de áudio AAC com
sudo apt-get install libfdk-aac-dev
Assim que essas coisas forem feitas, precisaremos obter o código-fonte para a versão atual do ffmpeg com
sudo apt-get source ffmpeg
E quando isso for feito, você terá que fazer uma pequena busca em sua pasta Home. Encontre uma pasta que comece com “ffmpeg”. Ele terá o número da versão logo após ele separado por um travessão. Aqui está o meu:
Abra seu terminal nessa pasta. Se você não puder fazer isso, abra o terminal e digite:
cd ffmpeg-<version>
onde “
cd ffmpeg-2.8.8
Agora digite
ffmpeg -buildconf
Ele irá mostrar a você toda a configuração de sua instalação atual do ffmpeg. Você precisará copiar tudo após “configuração:” sem os bits abaixo daquela enorme parede de texto. No meu caso, estou copiando isto: (Sua configuração pode ser diferente, então não copie o que estou mostrando aqui.)
--prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
Agora, cole o que quer que você tenha no gedit ou em algum outro editor de texto e adicione ao final:
--enable-nonfree --enable-nvenc --enable-libfdk-aac
OK, agora tudo o que você precisa fazer é digitar
./configure <that massive wall of text>
onde “
Depois de terminar tudo, digite
make
Espere que isso acabe e digite
sudo make install
Você Terminou!
Testando
OK, então como você sabe que obteve suporte com sucesso para o NVENC? É hora de dar uma volta no ffmpeg e codificar um vídeo com ele.
Para fazer isso, você precisará de um arquivo de vídeo para converter. Digamos que nosso vídeo esteja em “/home/miguel/Desktop/test.mkv” e queremos codificá-lo como “/home/miguel/Desktop/test.mp4.” Veja como fazemos isso com o ffmpeg e seu novo amor pelo NVENC:
time ffmpeg -i /home/miguel/Desktop/test.mkv -acodec copy -vcodec nvenc /home/miguel/Desktop/test.mp4
Você deve ver algo assim:
E é isso! Matamos dois coelhos com uma cajadada: você aprendeu como obter NVENC em seu sistema Linux e como codificar um vídeo usando o prático comando de terminal do ffmpeg. Se você ficar preso em algum lugar ou encontrar uma maneira melhor de fazer isso, deixe um comentário!