Uma GPU pode ser usada para codificar h264?


13

Gostaria de saber se eu consigo uma placa gráfica melhor, poderia acelerar a codificação h264 na minha máquina usando o freio de mão?

Em caso afirmativo, como posso saber qual placa gráfica suporta isso?

Estou ciente de que a GPU pode decodificar o h264 por hardware, mas não tenho certeza sobre a codificação.


Relacionado: Compressão de vídeo acelerada - de qualquer forma, você deseja ter uma placa NVIDIA para isso e estar disposto a gastar dinheiro.
slhck


Para a codificação h.264, o freio de mão usa o codificador de software x264 (videolan) . Algumas respostas abaixo implicam que o handbrake usa ffmpeg, que pode usar implementações x264 ou hw (GPU). Embora essa pergunta antiga (mas ainda relevante) provavelmente não esteja perguntando "como acelerar o freio de mão", mas "como tornar a codificação h.264 mais rápida". As respostas terão prazo de validade (algumas já expiraram); mas, por enquanto, se estiver executando o processamento de ML e / ou em lotes, talvez seja necessário corresponder uma implementação ao seu hardware
michael

fwiw, achei este comentário do ffmeg interessante: "Os codificadores de hardware normalmente geram uma saída com qualidade significativamente menor que os bons codificadores de software como x264, mas geralmente são mais rápidos e não usam muito recurso da CPU. (Ou seja, eles exigem uma taxa de bits mais alta para gerar saída com a mesma qualidade perceptiva, ou eles produzem saída com uma qualidade perceptual mais baixa na mesma taxa de bits.) "
michael

Respostas:


7

Usando o Handbrake, a resposta seria não. O Handbrake é um codificador h.264 somente para CPU, embora agora seja capaz de usar o OpenCL para dimensionamento de vídeo e tenha algum suporte para DXVA para decodificação de vídeo.

A questão vinculada pelo slhck menciona o MediaCoder , mas requer uma placa de vídeo Nvidia ou uma CPU Intel com um núcleo gráfico de segunda geração.

Existem alguns produtos mais antigos que foram obsoletos, especificamente o Badaboom e o software ATi Avivo.

O Badaboom, que poderia usar os processadores gráficos Nvidia e Intel para acelerar o processo de codificação, mas agora está no fim da vida útil e não suporta placas gráficas mais recentes.

A ATi tinha seu próprio codificador de vídeo que costumava ser chamado de "Avivo" antes de ser incorporado ao AMD Codec Package, que incluía o AMD Video Converter, embora ele não esteja mais disponível.


Então, eu estou usando uma CPU AMD no momento, isso significa que é uma perda de tempo para mim? Pode ser qualquer placa NVIDIA - oh, então ela tem que suportar CUDA?
peter

Encontrei este link, en.wikipedia.org/wiki/CUDA , que sugere que muitas placas NVIDIA suportam CUDA.
peter

Atualizei minha resposta com um link para o pacote de software da AMD que pode ajudá-lo a usar a GPU para codificar o vídeo, mas requer uma placa da série HD2000 ou melhor. Se você possui uma CPU particularmente poderosa, mas uma placa gráfica econômica, o Handbrake ainda pode ser mais rápido.
Mokubai

O Badaboom está sendo finalizado em 18/04/2012.
HVS

2
A resposta acima não está mais correta.
totaam 4/09/13

4

O x264 agora suporta aceleração de codificação OpenCL. A quantidade de aceleração que você obtém dependerá do desempenho da sua placa gráfica, no meu GTS 450 não recebo nenhuma e, com placas mais lentas, ela diminui a codificação. Cartões melhores podem ajudar. Tudo o que você precisa fazer é adicionar --opencl à linha de comando do x264. Acredito que o handbrake utiliza as mesmas bibliotecas x264 e oferece a mesma aceleração OpenCL nas versões mais recentes.


Como devo usar a aceleração de codificação OpenCL?
precisa saber é o seguinte

2

https://trac.ffmpeg.org/wiki/HWAccelIntro

O FFmpeg fornece um subsistema para aceleração de hardware.

A aceleração por hardware permite o uso de dispositivos específicos (geralmente placas gráficas> ou outros dispositivos específicos) para executar o processamento multimídia. Isso permite usar hardware dedicado para executar cálculos exigentes enquanto libera a CPU de tais cálculos. Normalmente, a aceleração de hardware permite que dispositivos de hardware específicos (geralmente a GPU) executem operações relacionadas à decodificação e codificação de fluxos de vídeo ou filtragem de vídeo.

Ao usar a ferramenta FFmpeg, a decodificação assistida por HW é ativada usando o -hwaccel opção que habilita um decodificador específico. Cada decodificador pode ter limitações específicas (por exemplo, um decodificador H.264 pode suportar apenas o perfil da linha de base). A codificação assistida por HW é ativada através do uso de um codificador específico (por exemplo, nvenc_h264). A filtragem do processamento assistido por HW é suportada apenas em alguns filtros e, nesse caso, você ativa o código OpenCL através de uma opção de filtro.

Existem vários padrões de aceleração de hardware API, alguns dos quais são suportados em certa medida pelo FFmpeg.

A opção "-hwaccel auto" permite selecionar a decodificação acelerada baseada em hardware a ser usada na sessão de codificação. Você pode adicionar esse parâmetro com "auto" antes da entrada (se o seu x264 for compilado com o suporte ao OpenCL, você poderá tentar adicionar o parâmetro -x264opts), por exemplo:

ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output

Desculpe, mas não lembro como listar todas as opções disponíveis para "-hwaccel".

Além disso, você pode tentar o seguinte: https://wiki.archlinux.org/index.php/Hardware_video_acceleration


Parece que isso não responde especificamente à pergunta, embora pareça útil. Que tal você adicionar alguns detalhes que mostram como o ffmpeg e seus argumentos podem ajudar o OP.
Music2myear

Essa resposta implica usar ffmpeg em vez de freio de mão para a codificação h.264, o que provavelmente é bom, pois a pergunta provavelmente está apenas pedindo a maneira mais rápida de codificar - e presume que a GPU permitiria isso. Observe que nem todas as GPUs são igualmente poderosas (por exemplo, GPUs integradas versus dedicadas), e as CPUs também possuem otimizações que as bibliotecas podem utilizar se a biblioteca for compilada para dar suporte a ela. Portanto, a "aceleração de hardware" é o caminho certo a seguir, seja por CPU ou GPU.
Michael

0

No momento, o Handbrake suporta os seguintes codificadores acelerados por hardware para o H.264 / AVC:

  1. Intel QuickSync (no Windows e no Linux). Isso é compatível com pelo menos as linhas de processadores Sandybridge (segunda geração Core) da série Intel com gráficos integrados ativados e expostos ao sistema operacional. Hardware recomendado para qualidade de codificação aceitável: Haswell (série Core de 4ª geração) e além, que introduziu o conceito de níveis de granulação fina (TUs), funções de lookahead (como modos de codificação LA-BRC e ICQ ) com desempenho significativamente melhor. Consulte o guia de uso da documentação do freio de mão aqui .

  2. NVENC da NVIDIA : Isso requer pelo menos as GPUs da série Kepler (GK +) da NVIDIA e acima dos SKUs de consumidor de alto desempenho (série GTX) e as formações profissionais (GPUs Quadro e Tesla baseadas em Kepler e além). Está disponível no Windows e Linux.

É importante notar que, com o NVENC, você estará artificialmente limitado a no máximo duas sessões de codificação simultânea nos SKUs do consumidor, enquanto a formação profissional permanece inalterada. Para sua referência sobre recursos específicos do codificador, consulte a matriz GPU . Para obter melhor desempenho e qualidade do codificador, siga a iteração mais recente das GPUs Pascal e Volta .

Opcionalmente:

  1. O suporte à codificação do AMD AMF também está disponível nas versões noturnas atuais para o Windows SOMENTE. Uma observação especial sobre o AMF da AMD (que utiliza o codificador VCE embutido no hardware em todas as GCN + SKUs) é que, em hardware mais recente, como Polaris (série RX 400+) e Vega , algumas afinações avançadas de codificador para H.264 / AVC foram preteridos quando introduziram o suporte à codificação HEVC. O que a AMD abandonou foi a codificação de quadro B, sem suporte para quantização adaptativa (AQ), um recurso que os codificadores baseados em hardware acima mencionados (QuickSync e NVENC) implementaram por gerações sem regressões. Além disso, consulte isso em notas sobre métricas de taxa de transferência sobre o que esperar.

No que diz respeito ao suporte da Apple, isso é, na melhor das hipóteses, tentativa . A API VideoToolBox , onde implementada além do escopo do Handbrake, também parece ter um conjunto muito limitado de controles. Mesmo que o Handbrake o adote a montante, não espere milagres em termos de retenção e produtividade da qualidade.

Observe que você pode precisar usar a versão noturna mais recente para usar os recursos mais recentes do codificador em sua plataforma, como no momento. Isso definitivamente mudará no futuro.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.