Não, não é. O FFMPEG não suporta a tecnologia QuickSync da Intel. Para usar o QuickSync, um programa precisa passar pelo Intel Media SDK, que não está disponível para o Linux.
Eu tenho uma caixa do Linux e gostaria de codificar alguns vídeos com o ffmpeg. Eu tenho ouvido que meu processador (um segundo processador gen core i5) tem suporte de hardware para codificação h.264.
É possível fazer com que o ffmpeg use isso e, em caso afirmativo, como?
A partir de hoje, a tecnologia QuickSync da Intel é suportada no Linux e é exposta por duas formas principais: o VAAPI e o SDK de mídia da Intel.
Quando configurado adequadamente, você obterá os codificadores baseados em QuickSync por meio do Intel MediaSDK, ou seja, h264_qsv
e hevc_qsv
. Para ver o uso do codificador:
ffmpeg -h encoder=h264_qsv
ffmpeg -h encoder-hevc_qsv
O segundo método, através das APIs do VAAPI, requer que o FFmpeg seja construído com a opção --enable-vaapi
passada no estágio ./configure
. Este é o padrão em distribuições como Debian e Arch Linux e, como tal, prontamente disponível para uso imediato.
Para listar os codificadores e filtros baseados em VAAPI disponíveis em uma compilação do FFmpeg, execute:
$ for i in encoders decoders filters; do
echo $i:; ffmpeg -hide_banner -${i} | egrep -i "vaapi"
done
E no uso:
ffmpeg -h encoder=hevc_vaapi
ffmpeg -h encoder=h264_vaapi
ffmpeg -h encoder=vp8_vaapi
ffmpeg -h encoder=vp9_vaaapi
A partir da lista acima, é óbvio o que cada codificador acima envia o codec de vídeo para a saída, desde H.265 / HEVC até VP9.
O suporte à plataforma varia de acordo com sua plataforma:
(a). A codificação H.264 é suportada desde o Sandybridge (segunda geração de processadores Intel Core) até o presente.
(b). A codificação HEVC é suportada no Skylake e além, com codificação de 10 bits disponível no Kabylake e além.
(c). A codificação VP8 está disponível pelo menos em Broadwell (Gráficos de Processadores Intel Core de 5ª Geração) e além.
(d). A codificação VP9 está disponível pelo menos no Kabylake e acima. Coffelake e além oferecerão codificação VP9 de 10 bits.
Algumas notas adicionais sobre codificação de qualidade:
E agora, pequenas notas sobre o NVENC e ajustes para codificações de alta qualidade:
O Quick Sync Encoder da Intel, como qualquer outro codificador baseado em hardware, tem várias limitações em comparação com um codificador de software puro, como x264 e x265, ou seja, controle de qualidade e uma limitação rígida nos tipos de textura de entrada suportados. Portanto, se você estiver considerando o QuickSync para qualquer fluxo de trabalho profissional, avalie o benefício de desempenho versus a qualidade de codificação perceptual antes de investir nele.
Se você estiver procurando codificações de alta qualidade no VAAPI, certifique-se de estar pelo menos no Haswell (Intel iGPUs de quarta geração), pois essa arquitetura introduziu recursos como o conceito de "Uso de destino" (TU). Esse recurso destina-se a permitir o acesso simples a uma série de gradações sem a complexidade de forçar os usuários a selecionar um método de controle de taxa de bits e taxa. Nas iterações anteriores, embora houvesse tecnicamente sete etapas, apenas três estavam realmente expostas ao consumo: qualidade (TU1), balanceada (TU4) e velocidade (TU7). Isso mudou com o último giro dos gráficos Intel HD, com cada etapa totalmente selecionável e exposta pelo SDK de mídia Intel.
Destacam-se as otimizações mais recentes em relação aos algoritmos de controle de taxa de bits, sendo conceitos notáveis o LA-BRC. Dê uma olhada nisso aqui . Veja esta resposta para mais ponteiros sobre o mesmo.
x264 aceda ao QuickSync sem utilizar o MediaSDK. Intel chegou a eles e eles se ajudaram mutuamente para conseguir isso (google para x264 QuickSinc). Pode ser possível capitalizar o seu esforço e trazê-lo para ffmpeg ...
Tags ffmpeg cpu sandy-bridge