Oferta de HalloweenDoce ou travessura: conserta o vídeo!Os três planos baixam. A licença perpétua economiza $30Até 2 de nov., 23:59 (horário do Pacífico)

Ver preços

Decodificação e codificação de vídeo por hardware no Windows e no Mac: D3D11, CUDA, Vulkan, OpenGL e Metal explicados

Como funcionam NVDEC, NVENC, Quick Sync, AMF, D3D11VA, Vulkan Video e VideoToolbox, o que é um pipeline de GPU sem cópia e quando o encode na GPU compensa.

O essencial

A decodificação e a codificação de vídeo por hardware passam o trabalho pesado do codec para motores de função fixa na GPU, em vez da CPU. No Windows, os apps chegam a esses motores pelo D3D11VA, pelo D3D12, pelo SDK da NVIDIA baseado em CUDA, pelo AMD AMF, pelo Intel oneVPL ou pelo Vulkan Video; no Mac, pelo VideoToolbox. O resultado é menos carga na CPU, exportações mais rápidas e quadros que podem ficar na memória da GPU.

  • As GPUs têm motores de vídeo dedicados (NVDEC e NVENC da NVIDIA, Quick Sync da Intel, VCN da AMD, o media engine da Apple) que decodificam e codificam separados dos núcleos gráficos.
  • No Windows, eles são acessados por várias APIs: D3D11VA e vídeo do D3D12, o SDK da NVIDIA baseado em CUDA, AMD AMF, Intel oneVPL e Media SDK, e Vulkan Video. Os Macs usam o VideoToolbox.
  • O ganho real muitas vezes é a carga menor na CPU: no nosso teste, a decodificação por hardware de H.264 em 4K usou cerca de 95% menos tempo de CPU que a decodificação por software.
  • A codificação por hardware é rápida, mas gasta mais bits para a mesma qualidade. Nossa codificação HEVC na GPU empatou com o VMAF do x265 sendo 3,3 vezes mais rápida, com 15% mais bits.
  • Um pipeline sem cópia mantém os quadros na memória da GPU entre decodificação, processamento, exibição e codificação, com pontes entre D3D11, CUDA, OpenGL, Vulkan e Metal.

O que acontece com um quadro

Todo app de vídeo roda as mesmas quatro etapas: decodificar o arquivo comprimido em quadros, processá-los (redimensionamento, cor, modelos de IA) e depois exibi-los na tela ou codificá-los em um novo arquivo. Cada etapa pode rodar na CPU ou na GPU, e cada passagem de uma para a outra custa tempo.

Os quadros são maiores do que a maioria das pessoas imagina. Um quadro 4K em 10 bits 4:2:0 (o formato P010 que as GPUs usam) ocupa 3.840 × 2.160 × 1,5 amostra × 2 bytes, cerca de 24,9 MB. A 60 quadros por segundo, isso dá 1,5 GB a cada segundo, em cada direção, se os quadros ficarem indo e voltando entre a memória do sistema e a memória da GPU. Um pipeline que decodifica, processa e codifica na GPU sem essa ida e volta é chamado de pipeline sem cópia, e é daí que vem a maior parte da velocidade dos softwares de vídeo modernos.

Os motores de vídeo dentro da sua GPU

A decodificação e a codificação de vídeo não rodam nos mesmos núcleos que desenham jogos ou rodam modelos de IA. As GPUs têm blocos separados, de função fixa, para elas:

FabricanteMotor de decodificaçãoMotor de codificaçãoAcessado por
NVIDIANVDECNVENCNVIDIA Video Codec SDK (com CUDA), D3D11VA, D3D12, Vulkan Video
IntelQuick Sync VideoQuick Sync VideoIntel oneVPL (Iris Xe e mais novas), Media SDK (GPUs mais antigas), D3D11VA, D3D12, Vulkan Video
AMDVCNVCNAMD AMF, D3D11VA, D3D12, Vulkan Video
AppleMedia engineMedia engineVideoToolbox

A NVIDIA diz isso com todas as letras: as GPUs dela têm decodificadores e codificadores de hardware separados dos núcleos CUDA. Isso tem duas consequências. Primeiro, decodificar e codificar por hardware quase não atrasa o resto do trabalho da GPU, então um modelo de IA pode rodar enquanto o motor de vídeo decodifica os próximos quadros. Segundo, o que um motor consegue fazer está gravado no silício: o suporte a codecs, profundidade de bits e formatos de croma depende da geração da GPU. A matriz de suporte da NVIDIA, por exemplo, aponta a codificação 4:2:2 como novidade da geração Blackwell. Confira a matriz do seu fabricante antes de supor que um codec é acelerado.

As APIs de decodificação e codificação no Windows e no Mac

Um mesmo motor de vídeo normalmente pode ser acessado por várias APIs. Cada uma tem os seus pontos fortes:

APIPlataformaO que se destaca
D3D11VAWindowsIndependente de fabricante, embutida no Windows, a forma de decodificar com suporte mais amplo em qualquer GPU; os quadros caem em texturas D3D11 prontas para exibir
Vídeo do D3D12WindowsA mesma ideia independente de fabricante no Direct3D 12, com controle explícito de memória e filas; também codifica
NVDEC e NVENC (Video Codec SDK)Windows, LinuxAcesso direto aos motores da NVIDIA, o conjunto completo de controles do encoder e quadros na memória CUDA para processamento em CUDA
AMD AMFWindows, LinuxAcesso aos motores de vídeo da AMD, mais computação na GPU para conversão e redimensionamento
Intel oneVPL e Media SDKWindows, LinuxAcesso ao Quick Sync: oneVPL para Iris Xe e mais novas, Media SDK para gráficos Intel mais antigos
Vulkan VideoWindows, Linux, outrosUm padrão entre fabricantes: decodificação, codificação, computação e gráficos em uma única API explícita
VideoToolboxmacOSO framework da Apple para codificação e decodificação aceleradas por hardware no media engine do Mac

A decodificação e a codificação por software (libavcodec, x264, x265, SVT-AV1) continuam sendo o plano B para tudo o que o hardware não dá conta, e a referência de qualidade.

Os cinco pipelines: D3D11, CUDA, OpenGL, Vulkan e Metal

A decodificação produz quadros; o pipeline decide onde eles ficam e quem trabalha neles em seguida. Cada API gráfica ou de computação é um tipo diferente de pipeline:

  • O D3D11 é o burro de carga do Windows para vídeo. Os decodificadores gravam direto em texturas D3D11, o processador de vídeo as converte e redimensiona, e a swap chain as exibe. É maduro, funciona em qualquer GPU com Windows e é a casa natural dos quadros decodificados por hardware.
  • O CUDA é a plataforma de computação da NVIDIA. Quadros decodificados pelo NVDEC podem ficar na memória CUDA para processamento e ir direto para o NVENC. A NVIDIA documenta uma API de interoperabilidade entre CUDA e Direct3D 11, então os resultados do CUDA podem virar texturas D3D11 sem uma cópia pela memória do sistema.
  • O OpenGL é a API gráfica mais portátil e ainda é comum em players e editores. No Windows, ele compartilha texturas com o D3D11 por extensões de interoperabilidade: a WGL_NV_DX_interop2 da NVIDIA ou a GL_EXT_memory_object_win32, independente de fabricante, que importa memória do D3D11 para o OpenGL.
  • O Vulkan é a API explícita moderna: gráficos, computação e, com o Vulkan Video, decodificação e codificação em um só lugar, com qualquer fabricante. A extensão VK_KHR_external_memory_win32 permite que o Vulkan compartilhe memória com o D3D11 no Windows.
  • O Metal é a API de GPU da Apple para gráficos e computação no Apple silicon. A Apple descreve a memória unificada do chip como algo que permite a todas as suas partes acessar os mesmos dados sem copiá-los entre áreas de memória, então um quadro decodificado pelo VideoToolbox pode ser processado e exibido sem atravessar um barramento.

A parte difícil não é nenhuma API isolada; são as fronteiras entre elas. Um quadro decodificado com CUDA, mas exibido com OpenGL, precisa de uma ponte, e uma ponte que recorre à memória do sistema joga fora a vantagem de decodificar na GPU.

O que nossos testes mostraram

Testamos um notebook comum: um Intel Core i7-1360P com gráficos integrados Intel Iris Xe, usando o FFmpeg 8.1. O FFmpeg listou três caminhos de hardware nele: D3D11VA, D3D12VA e Vulkan.

Decodificando 5 segundos de H.264 em 4K (121 quadros a 25 Mbps):

CaminhoTempo de CPU (usuário e sistema)Tempo decorrido
Software (libavcodec)4,45 s0,55 s
D3D11VA0,22 s0,40 s
D3D12VA0,30 s0,48 s
Vulkan0,25 s0,52 s

A CPU decodificou o H.264 rápido espalhando o trabalho por muitas threads, mas usou cerca de 4,5 segundos de tempo de CPU para isso. Os três caminhos de hardware terminaram mais ou menos tão rápido usando cerca de 95% menos tempo de CPU, o que deixa o processador livre para todo o resto do pipeline.

Codificando 5 segundos de imagem 1080p detalhada com alvo de 4 Mbps:

EncoderTempoBitrate realVMAF
x264, preset medium (software)3,7 s3,4 Mbps71,6
x265, preset medium (software)7,0 s3,5 Mbps72,5
H.264 na GPU (D3D12)2,1 s4,3 Mbps67,2
HEVC na GPU (D3D12)2,1 s4,1 Mbps72,8
Gráficos de barras: tempo de CPU para decodificar H.264 em 4K por caminho, e tempo de codificação com VMAF e bitrate para x264, x265 e H.264 e HEVC na GPU

O encoder HEVC da GPU empatou com o VMAF do x265 sendo 3,3 vezes mais rápido, mas precisou de cerca de 15% mais bits para isso; o encoder H.264 usou 26% mais bits que o x264 e ainda assim teve nota menor. É a troca habitual: encoders de hardware são ajustados para velocidade e consumo de energia, encoders de software para qualidade por bit. Com este driver, os encoders Vulkan Video do FFmpeg não iniciaram, um lembrete de que o suporte varia conforme a GPU e o driver. Como medimos a qualidade de vídeo explica o que o VMAF mede.

Como o KwaFlux usa cada caminho

O KwaFlux não aposta em uma única API. O motor de mídia dele traz um plugin para cada caminho de decodificação e de codificação e faz pontes entre os pipelines, para conseguir escolher uma rota de hardware que funcione em cada máquina e manter os quadros na GPU.

Diagrama do pipeline do KwaFlux: decodificadores de hardware em ordem de prioridade, pontes entre APIs na memória da GPU, processamento com ONNX Runtime e DirectML ou Core ML, exibição via D3D11, OpenGL, Vulkan ou Metal, e encoders de hardware em ordem de prioridade
  • Oito caminhos de decodificação, testados em ordem. No Windows, a configuração do motor tenta D3D11VA, depois D3D12VA, NVIDIA NVDEC, AMD AMF, Intel oneVPL, Intel Media SDK e Vulkan Video, e só decodifica por software quando nenhum deles consegue abrir o arquivo.
  • Seis caminhos de codificação. Para codificar, ele tenta NVIDIA NVENC, AMD AMF, Intel oneVPL, Media SDK e Vulkan Video antes do software. A tabela de encoders também inclui os encoders VideoToolbox da Apple.
  • Quatro backends de renderização. A imagem é desenhada com D3D11, OpenGL, Vulkan ou Metal. O padrão, AUTO, deixa o motor escolher, e um backend que a plataforma não suporta volta para AUTO.
  • Pontes que evitam a memória do sistema. Os quadros do NVDEC chegam ao D3D11 pela interoperabilidade D3D11 do CUDA; D3D11 e OpenGL compartilham texturas via WGL_NV_DX_interop2 ou GL_EXT_memory_object_win32; o Vulkan compartilha memória com o D3D11 via VK_KHR_external_memory_win32; D3D12 e D3D11 trocam quadros por handles DXGI compartilhados. Quando o OpenGL não tem uma ponte eficiente em uma máquina, o player passa para o D3D11 em vez de copiar cada quadro.
  • Uma GPU por trabalho. Em notebooks com duas GPUs, o motor associa os adaptadores pelo LUID, para que decodificação, processamento e exibição não fiquem jogando quadros entre a GPU integrada e a dedicada.
  • Recuperação, não travamento. Se o Windows reiniciar o driver gráfico (TDR), o player recria o dispositivo D3D11. Toda ponte tem um caminho pela CPU, e uma exportação cujo encoder de GPU não consegue iniciar é codificada por software.
  • IA em qualquer GPU recente. No Windows, o processamento de IA roda pelo ONNX Runtime com DirectML, que funciona em GPUs DirectX 12 da Intel, AMD e NVIDIA. No macOS 13 ou mais recente, o Componente de aceleração por GPU roda os recursos compatíveis pelo Core ML da Apple. De qual GPU você precisa e KwaFlux no Mac tratam do lado do hardware.

Dois ajustes permitem conduzir isso. Configurações › Desempenho › Decodificação acelerada por hardware liga ou desliga a decodificação por hardware (vale depois de reiniciar o app), e Processador de IA escolhe Auto, GPU ou CPU para o trabalho de IA. No Conversor, Conversão rápida › Aceleração por GPU codifica H.264 e HEVC na placa de vídeo. Vem desligada por padrão: o KwaFlux avisa que ela é mais rápida, mas tem qualidade um pouco menor que a codificação por software no mesmo bitrate, o que bate com o nosso teste. Cada arquivo mostra um selo Codificado na GPU, ou Codificado por software se o encoder da GPU não conseguiu iniciar.

Como verificar a sua própria máquina

Liste os caminhos de hardware que o FFmpeg pode usar:

ffmpeg -hide_banner -hwaccels

Compare o tempo de CPU da decodificação por software e por hardware. A linha -benchmark mostra o tempo de usuário (utime), de sistema (stime) e o tempo decorrido (rtime):

ffmpeg -hide_banner -benchmark -i input.mp4 -an -f null -
ffmpeg -hide_banner -benchmark -hwaccel d3d11va -hwaccel_output_format d3d11 -i input.mp4 -an -f null -

Codifique HEVC na GPU via D3D12 e compare com o x265 no mesmo alvo:

ffmpeg -hide_banner -loglevel error -y -init_hw_device d3d12va=gpu -filter_hw_device gpu -i input.mp4 -vf "format=nv12,hwupload" -c:v hevc_d3d12va -rc_mode VBR -b:v 4M -maxrate 6M -c:a copy gpu_hevc.mp4
ffmpeg -hide_banner -loglevel error -y -i input.mp4 -c:v libx265 -preset medium -b:v 4M -c:a copy cpu_hevc.mp4

Depois dê nota a cada um em relação à fonte. Antes, baixe o vmaf_v0.6.1.json do repositório VMAF da Netflix para a mesma pasta, porque alguns builds do FFmpeg não incluem um modelo embutido:

ffmpeg -hide_banner -i gpu_hevc.mp4 -i input.mp4 -lavfi "[0:v][1:v]libvmaf=model=path=vmaf_v0.6.1.json" -f null -

Se a codificação por hardware tiver nota próxima à de software em um bitrate parecido, use-a para rascunhos e compartilhamentos rápidos; deixe a codificação por software para arquivamento. Para a escolha do codec em si, veja H.264 vs H.265 vs AV1.

Problemas comuns

ProblemaCausa provávelSolução
Um arquivo é decodificado por software mesmo com a decodificação por hardware ligadaCodec, profundidade de bits ou formato de croma que o motor não suporta (muitas vezes 4:2:2 ou 4:4:4)Confira a matriz de suporte do fabricante; a decodificação por software continua funcionando
Arquivos codificados na GPU parecem menos nítidosEncoders de hardware gastam bits de forma menos eficienteAumente o bitrate ou desligue a aceleração por GPU nas cópias finais
A codificação na GPU volta para softwareFormato não suportado, encoder ocupado ou problema de driverAtualize o driver gráfico; no Conversor, só H.264 e HEVC são codificados na GPU
Engasgos em um notebook com duas GPUsQuadros passando entre a GPU integrada e a dedicadaRode o app na GPU à qual a tela está ligada, ou atualize os drivers
A tela pisca e a imagem voltaO Windows reiniciou o driver gráfico (TDR)Atualize o driver; reduza outras cargas na GPU durante exportações longas
A decodificação por hardware não parece mais rápidaA CPU decodifica esse codec rápidoOlhe a carga da CPU: o ganho é o tempo de CPU economizado

O que isso não resolve

  • A decodificação por hardware não melhora a imagem. Os decodificadores produzem os mesmos quadros que o software; só o trabalho muda de lugar.
  • A codificação por hardware não supera um preset lento de software em qualidade por bit. Ela ganha em velocidade e consumo de energia.
  • Nenhuma GPU acelera todos os codecs. O suporte é definido pela geração do chip e pelo driver.
  • O pipeline sem cópia exige hardware compatível. Quando duas APIs ou duas GPUs não conseguem compartilhar memória, os quadros pegam a rota mais lenta, pela CPU.

Conclusão

Decodificação e codificação por hardware têm a ver com onde o trabalho acontece: em motores de função fixa em vez da CPU e, de preferência, sem os quadros saírem da memória da GPU. Ligue a decodificação por hardware para trabalhar com mais fluidez, use a codificação na GPU quando a velocidade importar mais que o último bit de eficiência e meça as duas na sua própria máquina.

O KwaFlux decodifica, processa e codifica vídeo na sua própria GPU, no Conversor e em cada módulo de IA. Os seus arquivos de mídia não são enviados para processamento. Roda no Windows 10 (64 bits, versão 1809 ou mais recente), no Windows 11 e no macOS 12 ou mais recente em Apple Silicon. Importar arquivos e explorar o app não exigem conta. O login com um plano pago só é necessário para exportar, converter, reparar um arquivo ou baixar um arquivo de um link.

Teste no seu próprio material

Baixe o KwaFlux e veja os efeitos de graça no seu próprio material antes de pagar — sem conta, processado na sua GPU, sem enviar sua mídia. As prévias de vídeo duram 1, 3 ou 5 segundos; as de estabilização, 5, 15 ou 30 segundos.

Perguntas frequentes

Codificação por hardware é pior que por software?

Normalmente, no mesmo bitrate. Encoders de hardware priorizam velocidade e consumo de energia em vez de eficiência, então precisam de mais bits para a mesma qualidade. No nosso teste, o encoder HEVC da GPU empatou com o VMAF do x265 sendo 3,3 vezes mais rápido, mas usou cerca de 15% mais bits.

Decodificação por hardware deixa a reprodução mais rápida?

Às vezes. O principal ganho é a carga menor na CPU: no nosso teste com H.264 em 4K, a decodificação por hardware usou cerca de 95% menos tempo de CPU com velocidade parecida. Isso pesa mais em codecs exigentes, resoluções altas e quando a CPU está ocupada com outras tarefas.

Qual a diferença entre D3D11VA e NVDEC?

Os dois usam o mesmo hardware de decodificação em uma GPU NVIDIA. O D3D11VA é a interface da Microsoft, independente de fabricante, e entrega os quadros como texturas D3D11; o NVDEC é a interface própria da NVIDIA e entrega os quadros ao CUDA para processamento. Os apps escolhem de acordo com o destino seguinte dos quadros.

Placa de vídeo integrada decodifica e codifica vídeo?

Sim. As GPUs integradas da Intel incluem o Quick Sync Video, e os chips recentes da AMD e da Apple têm os seus próprios motores de vídeo. Nosso notebook de teste decodificou H.264 em 4K e codificou HEVC nos gráficos Iris Xe. O suporte a codecs depende da geração.

Por que meu arquivo 4:2:2 é decodificado por software?

Porque muitos motores de vídeo de consumo só decodificam 4:2:0, o formato da maioria dos vídeos de entrega, e o suporte a 4:2:2 chegou só em algumas gerações mais novas. A decodificação por software continua funcionando, com um custo maior de CPU. Subamostragem de croma explicada trata dos formatos.

Fontes

  1. NVIDIA, "NVIDIA Video Codec SDK" (hardware decoders and encoders separate from the CUDA cores; NVENC codecs; 4:2:2 encoding on Blackwell) (acessado em 2026-10-22)
  2. NVIDIA, "Video Encode and Decode GPU Support Matrix" (acessado em 2026-10-22)
  3. NVIDIA, CUDA Runtime API, "Direct3D 11 Interoperability" (acessado em 2026-10-22)
  4. Intel, "Intel Video Processing Library (Intel VPL)" (hardware decode, encode, and processing; VPL runtime for Iris Xe and newer, Media SDK for older graphics) (acessado em 2026-10-22)
  5. AMD GPUOpen, "Advanced Media Framework (AMF) SDK" (access to AMD video engines, compute shaders, and hardware accelerators) (acessado em 2026-10-22)
  6. Microsoft Learn, "Direct3D 11 Video APIs" (acessado em 2026-10-22)
  7. Microsoft Learn, "WDDM support for timeout detection and recovery" (TDR resets an unresponsive graphics card) (acessado em 2026-10-22)
  8. ONNX Runtime, "DirectML Execution Provider" (DirectML is a DirectX 12 library for machine learning across a broad range of hardware) (acessado em 2026-10-22)
  9. Khronos, "VK_KHR_external_memory_win32" reference page (acessado em 2026-10-22)
  10. Khronos OpenGL Registry, "WGL_NV_DX_interop2" (sharing Direct3D 10 and 11 resources with OpenGL) (acessado em 2026-10-22)
  11. Apple Developer, "Video Toolbox" (hardware-accelerated video encoding and decoding) (acessado em 2026-10-22)
  12. Apple Developer, "Metal" (graphics and compute on Apple GPUs) (acessado em 2026-10-22)
  13. Apple Newsroom, "Apple unleashes M1" (unified memory lets the chip's components access the same data without copying it between pools of memory) (acessado em 2026-10-22)
  14. Netflix, "VMAF" repository (vmaf_v0.6.1.json model) (acessado em 2026-10-22)
  15. FFmpeg documentation (`-hwaccel`, `-hwaccel_output_format`, `-init_hw_device`, `-benchmark`) (acessado em 2026-10-22)
  • IA local
  • aprimorador de vídeo IA
  • qualidade de vídeo

Autor e editor da KwaFlux. Os artigos são revisados pela equipe editorial da KwaFlux e se baseiam em nossas notas de pesquisa de produto e nas especificações publicadas.