Por que é que um servidor de media usa muita CPU durante a reprodução?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

Uso elevado da CPU durante a reprodução de media geralmente significa que o servidor está a fazer mais do que enviar o ficheiro original. Pode estar a decodificar e recodificar vídeo, a incorporar legendas em cada frame, a converter HDR para um cliente SDR, a reduzir a resolução ou a criar um stream com bitrate inferior para uma ligação remota.

No entanto, uso elevado da CPU não prova automaticamente que o processador é fraco. A aceleração de hardware pode estar a funcionar apenas para parte do pipeline, uma tarefa de análise em segundo plano pode estar a correr ao mesmo tempo, ou várias sessões podem estar a competir pelos mesmos recursos. O primeiro passo é identificar o modo de reprodução e o processo que está realmente a consumir a CPU.

Verifique o Modo de Reprodução Antes de Culpar o Hardware

Abra o painel do servidor enquanto o stream problemático está ativo. Plex, Jellyfin, Emby e plataformas similares normalmente mostram se a sessão está a usar Reprodução Direta, Stream Direto ou Remux, conversão de áudio ou transcodificação completa de vídeo.

A Reprodução Direta envia o contentor original, vídeo, áudio e faixas de legendas suportadas para o cliente. Remux ou Stream Direto altera apenas parte do formato de entrega, muitas vezes sem recodificar o vídeo. Uma transcodificação de vídeo decodifica a fonte e cria um novo stream de vídeo, sendo o caminho mais provável para um uso elevado e sustentado da CPU.

Esta distinção determina o próximo teste. Uso elevado da CPU durante uma transcodificação de vídeo confirmada pode ser esperado se o processamento estiver a ser feito por software. Uso elevado da CPU durante a Reprodução Direta geralmente indica outra sessão, uma tarefa de análise em segundo plano ou um processo diferente a correr no servidor.

Estado da reprodução Trabalho do servidor O que o uso elevado da CPU sugere
Reprodução Direta Ler e entregar o ficheiro original Verifique trabalhos em segundo plano, outro processo ou outra sessão
Remux / Stream Direto Reempacotar streams ou converter áudio Uso intenso e sustentado da CPU é incomum; inspecione a tarefa exata
Transcodificação de áudio Converter ou misturar a faixa de áudio Geralmente mais leve que o vídeo; verifique se há processamento adicional
Transcodificação de vídeo Decodificar, filtrar, redimensionar e codificar vídeo Processamento por software ou aceleração de hardware incompleta
Incorporação de legendas Renderizar legendas em cada frame de vídeo Pode ser necessário um processamento completo do vídeo

A transcodificação de vídeo por software é geralmente a principal causa

Um servidor de media transcodifica vídeo quando o cliente não consegue aceitar a combinação original de codec, perfil, resolução, bitrate, contentor, áudio ou legendas. Também pode transcodificar porque o utilizador selecionou uma qualidade de reprodução inferior.

O servidor deve decodificar os frames de origem, aplicar os filtros necessários, redimensionar ou converter a imagem e codificar um novo fluxo rapidamente o suficiente para se manter à frente da reprodução. Uma origem 4K HEVC convertida para H.264 de resolução inferior requer muito mais processamento do que servir o ficheiro original.

Se todas estas etapas forem executadas em núcleos de CPU de uso geral, uma utilização elevada pode ser normal. A questão importante é se o transcodificador continua mais rápido que a reprodução. Uma CPU ocupada com reprodução suave é diferente de uma CPU no limite enquanto o cliente faz buffering repetidamente.

O Cliente Muitas Vezes Decide Se a CPU É Necessária

O mesmo ficheiro pode ser reproduzido diretamente numa box de streaming e desencadear uma transcodificação completa num navegador, aplicação de televisão, telemóvel ou leitor mais antigo. Cada cliente suporta uma combinação diferente de contentores, perfis de vídeo, profundidades de bits, formatos de áudio, legendas e taxas máximas de bits.

Mesmo quando o codec de vídeo é suportado, uma faixa de áudio ou formato de legendas incompatível pode alterar o caminho de reprodução. Um cliente pode aceitar vídeo HEVC mas exigir que o áudio TrueHD seja convertido, ou pode exigir transcodificação de vídeo quando as legendas selecionadas não podem ser reproduzidas localmente.

Compare o mesmo ficheiro em dois clientes mantendo a faixa de áudio, a seleção de legendas e a definição inalteradas. Se a alta utilização da CPU ocorrer apenas num cliente, concentre-se nas capacidades e definições desse cliente antes de substituir o hardware do servidor.

Qualidade Inferior Pode Aumentar o Uso da CPU do Servidor

Escolher uma definição inferior pode parecer que deveria reduzir a carga do servidor. Na realidade, o servidor geralmente tem de criar um novo fluxo quando a resolução ou taxa de bits solicitada difere da origem.

Por exemplo, pedir 1080p a 8 Mbps a partir de um ficheiro 4K de alta taxa de bits requer decodificação, redimensionamento e recodificação. Selecionar qualidade Original pode permitir Reprodução Direta quando o cliente suporta o formato de origem e a rede consegue transportar a sua taxa de bits.

Use a qualidade Original como um teste de diagnóstico na rede local. Não é uma solução universal: um cliente com codecs incompatíveis, largura de banda insuficiente ou legendas não suportadas pode ainda exigir conversão.

A Incorporação de Legendas Pode Transformar um Fluxo Leve Num Fluxo Pesado

Se o uso da CPU aumentar apenas após as legendas serem ativadas, a faixa de legendas selecionada é uma forte suspeita. Legendas em texto, como SRT, são frequentemente reproduzidas pelo cliente, enquanto PGS e VobSub são formatos baseados em imagem. ASS e SSA contêm texto, mas podem incluir estilos e posicionamento que alguns clientes não conseguem reproduzir.

Quando o cliente não consegue reproduzir a faixa de legendas, o servidor pode incorporá-la na imagem. Isso requer decodificar o vídeo, compor as legendas em cada frame e codificar um novo fluxo de vídeo.

A Plex trabalhou especificamente em melhorar o desempenho da incorporação de legendas durante a transcodificação por hardware, com resultados a depender do sistema operativo, tipo de GPU e se o mapeamento de tons permaneceu no processo. Por isso, o mesmo teste de legendas pode produzir diferentes usos da CPU em servidores distintos.

Teste a Faixa de Legendas Separadamente

Reproduza a mesma cena com as legendas desativadas. Se o uso da CPU cair imediatamente e a sessão voltar a Direct Play, o caminho das legendas — e não apenas o vídeo de origem — está a causar o trabalho extra.

De seguida, experimente uma faixa SRT externa, outra língua de legendas ou um cliente com suporte mais amplo para legendas. Verifique também se o servidor reporta incorporação de legendas em vez de simples entrega de legendas.

Não presuma que todos os formatos de legendas têm o mesmo custo. Uma faixa de texto estilizada pode ser fácil para um cliente e exigir processamento completo do vídeo noutro, enquanto uma legenda em imagem de um Blu-ray pode ser particularmente difícil de entregar sem incorporação.

Uma GPU a Funcionar Não Significa que Todo o Processo Está Acelerado

É possível ver atividade da GPU enquanto a CPU permanece elevada. A aceleração por hardware pode decodificar e codificar o vídeo enquanto a CPU ainda trata da renderização das legendas, conversão de áudio, redimensionamento, mapeamento de tons ou outro filtro.

Um caso de resolução de problemas da comunidade mostrou transcodificação GPU a operar juntamente com elevado uso da CPU devido à incorporação de legendas e conversão de áudio. O caso não deve ser tratado como uma regra fixa para todas as versões atuais, mas ilustra porque a utilização da GPU por si só é uma evidência incompleta.

Verifique tanto os motores de decodificação como de codificação da GPU, depois inspecione o registo do transcodificador para filtros de software. Compare o uso da CPU com as legendas desligadas, uma faixa de áudio compatível selecionada e o mapeamento de tons removido do teste.

A Aceleração por Hardware Pode Recuar para Software

Uma opção de aceleração por hardware pode ser ativada na interface do servidor mesmo quando o driver do anfitrião, as permissões do dispositivo, o runtime ou o codec selecionado não estão a funcionar corretamente.

Alguns formatos de origem podem usar a GPU com sucesso enquanto outros recorrem à CPU. Uma GPU pode suportar H.264 e HEVC Main, mas não a profundidade de bits exata, o formato de croma, o alvo de codificação ou o caminho de mapeamento de tons exigidos por um ficheiro específico.

Force uma transcodificação conhecida e monitorize o servidor em tempo real. Confirme que o decodificador e codificador de hardware estão ativos, inspecione o comando do transcodificador e procure falhas de inicialização ou mensagens de fallback de software em vez de confiar apenas na caixa de seleção ativada.

Docker Adiciona uma Camada Separada de Acesso à GPU

Quando o servidor de media corre no Docker, detetar a GPU no anfitrião não prova que a aplicação pode usá-la dentro do contentor. O contentor precisa do dispositivo, bibliotecas de espaço de utilizador compatíveis, o runtime correto e permissão para aceder às funções de vídeo.

Para implementações NVIDIA, uma sequência útil de validação é confirmar primeiro o driver do anfitrião, verificar que o Docker reconhece o runtime NVIDIA, confirmar que as bibliotecas e dispositivos necessários existem dentro do contentor e observar a atividade do codificador durante uma transcodificação forçada. Um contentor onde nvidia-smi as execuções ainda podem estar a faltar bibliotecas ou capacidades necessárias para o servidor de media.

Uma configuração prática do Docker precisa, portanto, de verificar o runtime NVIDIA, bibliotecas de espaço de utilizador, exposição do dispositivo e atividade do codificador dentro do contentor. Evite usar o modo privilegiado como atalho permanente; exponha apenas os recursos que o serviço necessita.

Máquinas Virtuais Podem Criar o Mesmo Padrão de Falha

Uma máquina virtual pode detetar um adaptador de ecrã sem ter acesso às funções de codificação e decodificação de hardware necessárias para a transcodificação de media. O passthrough da GPU, dispositivos mediados, drivers e permissões do convidado afetam todos o resultado.

Valide a GPU a partir do sistema operativo convidado e depois a partir do processo do servidor de media. A atividade da GPU ao nível do anfitrião não prova que a aplicação convidada está a usar o motor pretendido.

Se uma instalação nativa usa aceleração de hardware mas uma instalação VM idêntica usa muita CPU, compare a exposição do dispositivo e os registos antes de alterar as definições do codec ou reencodar a biblioteca.

O Mapeamento de Tom HDR Pode Deixar Trabalho Significativo na CPU

Quando um media HDR é reproduzido num ecrã SDR ou através de um cliente que não pode aceitar o fluxo HDR original, o servidor pode precisar de realizar mapeamento de tom além da transcodificação normal.

O pipeline pode incluir decodificação de 10 bits, conversão de espaço de cor, mapeamento de brilho, escalonamento, composição de legendas e codificação. O suporte de hardware para o codec de origem não garante que todas essas etapas possam permanecer na GPU.

Teste o mesmo ficheiro num cliente com suporte HDR e depois compare com uma saída SDR. Se as transcodificações SDR normais forem eficientes, mas as sessões HDR para SDR usarem muita CPU, investigue o método de tone-mapping e o suporte de hardware em vez de tratar toda a mídia 4K como equivalente.

A Conversão de Áudio Geralmente Não é Tão Pesada Quanto a Transcodificação de Vídeo

TrueHD, DTS, áudio multicanal ou um codec de áudio não suportado podem ser convertidos para um formato que o cliente consiga reproduzir. O servidor também pode fazer downmix do som surround para estéreo.

A transcodificação de áudio consome poder de processamento, mas geralmente é mais leve do que decodificar e reencodar um fluxo de vídeo inteiro. Remuxar um contentor também preserva o fluxo de vídeo e normalmente requer muito menos computação do que a conversão de vídeo.

Se o painel indicar apenas transcodificação de áudio enquanto a CPU permanece perto do seu limite, verifique o processamento de legendas, análise em segundo plano, outra sessão ativa ou um processo de transcodificador separado. Não presuma que o rótulo visível de áudio explica toda a carga de trabalho.

Reprodução Direta com Alta CPU Geralmente Significa que Outra Tarefa Está a Correr

A Reprodução Direta ainda requer leitura de ficheiros, autenticação, lógica da aplicação e entrega pela rede, por isso o uso da CPU não será exatamente zero. Normalmente, não deve exigir o processamento pesado de vídeo associado a uma transcodificação por software.

O Plex pode consumir uma quantidade substancial de CPU para deteção de introduções e créditos, miniaturas de pré-visualização, análise de voz, deteção de comerciais, otimização de mídia e preparação para download. Alguns destes trabalhos invocam o transcodificador mesmo quando ninguém está a assistir ativamente à mídia.

Verifique a lista de processos do sistema operativo em vez de apenas o gráfico total da CPU. Identifique se o transcodificador do fluxo atual, um processo de análise programada, um scanner de biblioteca ou um contentor não relacionado é o responsável.

A Análise Programada Pode Parecer Carga de Reprodução

Um trabalho em segundo plano pode começar aproximadamente ao mesmo tempo que alguém inicia a visualização, fazendo parecer que a reprodução em si causou o pico de CPU. As janelas de manutenção costumam ocorrer durante a noite ou pouco depois de novo conteúdo ser adicionado.

Uma discussão no Unraid atribuiu aparentemente a carga ociosa da CPU à análise programada de mídia e depois à deteção de introduções e créditos. Este é um exemplo da comunidade e não uma prova de que todos os casos de carga ociosa têm a mesma causa.

Pause temporariamente a geração de pré-visualizações, deteção de introduções, deteção de créditos, otimização e análise profunda de mídia. Se o uso da CPU diminuir sem alterar o fluxo ativo, mova essas tarefas para uma janela de manutenção diferente em vez de modificar as definições de reprodução.

Múltiplos Fluxos Multiplicam Diferentes Tipos de Trabalho

Uma sessão de reprodução direta adiciona principalmente demanda de armazenamento e rede. Uma transcodificação de áudio adiciona uma tarefa de conversão menor. Uma transcodificação de vídeo 4K por software pode consumir muito mais computação do que vários fluxos diretos.

Quando outro utilizador inicia a reprodução, inspecione cada sessão individualmente. Dois utilizadores não criam necessariamente o dobro da mesma carga: um pode reproduzir diretamente enquanto o outro insere legendas numa transcodificação HDR.

Adicione sessões de teste uma a uma enquanto observa CPU, GPU, rede, latência do disco e velocidade de transcodificação. Isto revela se o limite prático é a codificação por software, capacidade do codificador de hardware, contenção de armazenamento ou largura de banda agregada.

A TV ao Vivo Pode Requerer Processamento Adicional

A TV ao vivo pode chegar num codec, resolução, formato entrelaçado ou taxa de bits que o cliente de reprodução não consegue aceitar diretamente. O servidor pode precisar desentrelaçar, converter vídeo, alterar áudio ou criar um fluxo de taxa inferior.

Estas operações podem tornar a reprodução ao vivo mais intensiva para a CPU do que um filme comum que reproduz diretamente. A gravação e a análise comercial também podem correr em paralelo à visualização, adicionando mais trabalho ao servidor.

Verifique o codec da fonte da sessão ao vivo, o estado de desentrelaçamento, o modo de reprodução e a qualidade selecionada separadamente da biblioteca de mídia armazenada. Um problema na TV ao vivo não prova que todos os ficheiros locais requerem o mesmo hardware.

A Reprodução Remota Muitas Vezes Obriga a Uma Nova Taxa de Bits

Um ficheiro de alta taxa de bits pode reproduzir diretamente na LAN doméstica, mas exceder a velocidade de upload disponível do servidor na internet. O cliente remoto ou o limite do servidor então solicita um fluxo menor.

Reduzir a taxa de bits significa que o servidor normalmente deve criar uma nova saída de vídeo. O uso da CPU pode, portanto, aumentar durante a reprodução remota mesmo quando o mesmo cliente usa pouca computação do servidor em casa.

Compare a taxa de bits da fonte com a capacidade sustentável de upload e a definição de qualidade remota do cliente. Se reduzir o fluxo criar uma transcodificação por software, a aceleração por hardware corretamente configurada ou uma versão remota pré-codificada podem reduzir a demanda da CPU.

Um Pico Curto de CPU Pode Ser Normal

Alguns transcodificadores trabalham adiantados em relação à posição de reprodução para criar um buffer. O uso da CPU pode aumentar abruptamente no início, diminuir quando segmentos suficientes forem produzidos e aumentar novamente quando for necessário mais output.

Um pico breve com reprodução suave e temperaturas estáveis não requer necessariamente uma correção. Uso máximo sustentado, diminuição da velocidade de transcodificação, buffering repetido ou throttling térmico indicam um problema de capacidade mais significativo.

Observar a carga de trabalho durante vários minutos em vez de confiar numa única captura de CPU. Registar se o processador permanece fixo, se o transcodificador se mantém à frente e se a velocidade do relógio do servidor diminui com o aumento da temperatura.

Não reencode toda a biblioteca primeiro

Converter todos os ficheiros para um formato amplamente suportado pode reduzir a transcodificação em tempo real futura, mas requer tempo, armazenamento adicional e outra etapa de codificação com perda para muitas fontes.

Também pode não resolver a causa real se a CPU elevada vier de legendas incorporadas, mapeamento de tons HDR, limites remotos de taxa de bits, análise em segundo plano ou acesso à GPU quebrado dentro do Docker.

Primeiro identificar as combinações que falham repetidamente nos clientes que realmente usa. Criar cópias otimizadas apenas para mídia com problemas frequentes, ou usar um cliente mais capaz onde isso for mais simples do que manter várias versões da biblioteca.

Usar esta ordem de resolução de problemas

  1. Reproduzir a sessão de CPU elevada com o mesmo ficheiro e cliente.
  2. Registar se é Reprodução Direta, Remux, transcodificação de áudio ou transcodificação de vídeo.
  3. Identificar o processo exato que consome CPU.
  4. Registar a razão declarada para conversão.
  5. Testar qualidade original na rede local.
  6. Desativar legendas e selecionar outra faixa de áudio.
  7. Reproduzir o mesmo ficheiro noutro cliente.
  8. Monitorizar motores de decodificação e codificação da GPU.
  9. Inspecionar o registo do transcodificador ou FFmpeg para fallback por software.
  10. Verificar acesso à GPU dentro do Docker ou da máquina virtual.
  11. Pausar análise de mídia, geração de pré-visualizações e trabalhos de otimização.
  12. Adicionar fluxos adicionais um de cada vez.
  13. Verificar temperatura e velocidade do relógio da CPU.
  14. Atualizar hardware apenas após confirmação do gargalo.
Sintoma Direção provável Próximo teste
CPU aumenta apenas durante transcodificação de vídeo Codificação por software Verificar atividade de decodificação e codificação da GPU
CPU aumenta apenas com legendas Legendas incorporadas Desativar legendas ou selecionar uma faixa SRT
Apenas conteúdo HDR causa CPU elevada Mapeamento de tons ou processamento a 10 bits Testar o ficheiro num cliente com suporte HDR
GPU está ativa mas a CPU permanece elevada Aceleração parcial Verificar áudio, legendas, filtros e registos
Docker usa CPU enquanto o anfitrião vê a GPU Tempo de execução, bibliotecas ou permissões Verificar acesso ao hardware dentro do contentor
Reprodução direta mostra CPU elevada Processo em segundo plano ou não relacionado Inspecionar tarefas agendadas e nomes de processos
Apenas a reprodução remota usa CPU elevada Conversão de taxa de bits ou resolução Verificar velocidade de upload e qualidade remota
Um fluxo funciona, mas vários não Limite de computação concorrente Comparar o modo de reprodução para cada sessão
Picos breves de CPU seguidos de queda Processamento antecipado do buffer Confirmar que a reprodução permanece fluida
O uso elevado da CPU continua mesmo sem ninguém a assistir Análise, miniaturas, otimização ou downloads Pausar tarefas agendadas e em segundo plano

Conclusão Final

O alto uso da CPU durante a reprodução de mídia é geralmente resultado de uma decisão de processamento, não um diagnóstico por si só. A transcodificação completa por software é a causa mais comum, mas a incorporação de legendas, mapeamento de tons HDR, aceleração parcial por hardware, limites de qualidade remotos e sessões simultâneas podem criar carga semelhante.

Comece por identificar o modo de reprodução e o processo exato que está a usar a CPU. Se a sessão estiver a transcodificar, teste a compatibilidade do cliente, qualidade original, legendas, faixas de áudio e toda a cadeia de aceleração de hardware. Se for reprodução direta, inspecione a análise em segundo plano e outras tarefas ativas.

Atualize o servidor apenas depois de os registos e testes controlados mostrarem que o processamento em tempo real necessário excede a capacidade disponível. Muitos casos de alto uso da CPU podem ser resolvidos alterando o caminho de reprodução, corrigindo o acesso da GPU no Docker, agendando análises fora do horário de visualização ou selecionando um cliente que possa reproduzir diretamente a mídia original.

Perguntas Frequentes

Por que o uso da CPU aumenta quando as legendas estão ativadas?

O cliente pode não conseguir renderizar o formato de legenda selecionado. O servidor então incorpora as legendas em cada frame do vídeo, o que exige decodificação e recodificação do vídeo. Teste com legendas desativadas ou selecione uma faixa de texto suportada.

Por que a CPU continua alta quando a transcodificação por hardware está ativada?

A GPU pode acelerar apenas a decodificação e codificação de vídeo enquanto a CPU trata das legendas, áudio, mapeamento de tons, dimensionamento ou outro filtro. O acesso ao hardware pode também ser incompleto dentro do Docker ou de uma máquina virtual.

A reprodução direta não usa CPU?

Não. A reprodução direta ainda requer acesso ao ficheiro, rede, autenticação e processamento da aplicação. Normalmente, deve usar muito menos CPU do que a transcodificação de vídeo, por isso uma carga pesada sustentada deve levar a verificar trabalhos em segundo plano ou outro processo.

Por que reduzir a qualidade do streaming aumenta o uso da CPU?

Uma resolução ou taxa de bits mais baixa geralmente exige que o servidor crie um novo fluxo de vídeo. Se o ficheiro original pudesse ser reproduzido diretamente, selecionar uma qualidade inferior transforma a sessão numa transcodificação e aumenta o processamento do servidor.

A varredura de mídia pode causar alto uso da CPU enquanto um filme está a ser reproduzido?

Sim. A geração de miniaturas de pré-visualização, deteção de introdução ou créditos, otimização, análise de voz e outros trabalhos em segundo plano podem ocorrer ao mesmo tempo que a reprodução. Verifique a lista de processos e o estado das tarefas agendadas antes de atribuir todo o uso da CPU ao fluxo ativo.

Suporte e Dicas

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.