Na minha máquina, o Adobe Media Encoder é muito lento. Leva 12 horas para renderizar 4 minutos de vídeo 1080p no YouTube (o vídeo é baseado no projeto Adobe After Effects com um arquivo MOV original e quatro efeitos: curvas, remoção de granulação, máscara de nitidez e matiz / saturação.
Percebi que ele não usa toda a memória disponível, nem tenta usar o máximo de CPU possível. Aqui está o uso real durante o processo de codificação:
Existe uma maneira de acelerar o processo de codificação convencendo o aplicativo a usar toda a CPU e toda a memória disponível?
Como uma nota lateral, é esperado que seja tão lento? Não posso imaginar empresas de criação de filmes usando-o para codificar um filme que geralmente dura um pouco mais de 4 minutos e tem um pouco mais de quatro efeitos básicos, mesmo com um data center inteiro. A remoção do efeito "remover granulação" acelera a codificação de 12 horas para 3:30.
fonte
Respostas:
Pode não haver uma maneira. Com base na sua descrição do problema, parece que o processamento é a parte mais lenta. Enquanto o próprio codificador de vídeo é capaz de executar o processamento multiencadeado, o processamento de imagem que você está executando pode não ser capaz. Por padrão, o Premiere sempre executou o máximo de processamento paralelo possível para mim e frequentemente vejo que ele atinge 99% de uso da CPU no meu desktop com quatro núcleos hiperencadeado.
O problema é mais provável que alguns de seus efeitos exijam que o resultado do quadro anterior comece o processamento no quadro seguinte. Se esse for o caso, não há uma maneira fácil de dividi-lo em vários threads e isso impossibilitaria atingir 100% de uso da CPU em um computador com vários núcleos.
Da mesma forma, não se espera que a RAM limite a codificação, pois é uma operação de fluxo. Há algumas coisas que precisam ser rastreadas ao longo do tempo, mas, na maioria das vezes, é uma operação de fluxo com dados saindo o mais rápido possível, para que não haja muita acumulação de dados.
Há duas coisas principais que podem melhorar o desempenho. O primeiro é o processamento de GPU. As CPUs de uso geral não são realmente ideais para muitas tarefas de processamento de áudio / vídeo. Eles são projetados para realizar uma ampla variedade de operações de uso geral, mas não são super eficientes em operações básicas. As GPUs, por outro lado, são projetadas para executar operações simples muito rapidamente. Eles geralmente podem reduzir bastante as tarefas de processamento de vídeo.
Uma melhoria adicional pode ser encontrada no hardware desenvolvido especificamente. Existem placas profissionais projetadas especificamente para o processamento de vídeo e fornecem processamento e codificação em tempo real. Eles geralmente são incluídos em estações de trabalho profissionais de edição de vídeo, mas o preço pode ser bastante alto. Não é algo inédito para uma estação de trabalho de edição de vídeo profissional conseguir subir na faixa de US $ 15.000 a US $ 20.000 ou até mais, apenas para hardware. Eles podem custar muito menos se você não se importar em esperar pelas renderizações (eu trabalho em um sistema de US $ 2.350 para o meu trabalho em vídeo), mas eles também podem ficar muito altos.
fonte
Eu não estou feliz quando estou renderizando, a menos que eu possa realmente sentir cheiro de plástico queimado, nada é mais frustrante do que o AE dizendo que sua renderização não será concluída até a morte do universo, enquanto, ao mesmo tempo, sua CPU mal está suando. No entanto, há algo que você pode fazer sobre isso.
O After Effects vem com um renderizador de linha de comando chamado aerender.exe plain ol ' aerender no mac). Está na pasta do programa AE. Usá-lo é um pouco desafiador para as pessoas que não estão acostumadas com o poder da linha de comando - = awesome - = , mas definitivamente vale a pena fazer isso se estiver fazendo algum trabalho pesado no After Effects e quiser aproveitar todo o poder poder da sua máquina.
A beleza disso é que você pode executar quantas instâncias quiser. O que normalmente faço é continuar adicionando instâncias até começar a ficar com pouca memória. Eu tenho uma máquina com 40 núcleos físicos e é preciso muito para maximizar a CPU, mas aqui está uma captura de tela onde eu finalmente consegui. Cada uma dessas janelas é uma nova instância do mecanismo de renderização AE:
Nesse exemplo, a velocidade por quadro de cada renderizador quase não diminuiu em comparação com uma única instância, portanto, consegui um aumento de velocidade de aproximadamente 4000%. YMMV, dependendo de quantos núcleos e de quantos RAM sua máquina possui. Fui ao esforço porque tinha um projeto que envolvia composições muito longas e razoavelmente complexas. O projeto simplesmente não teria sido realizado sem essa técnica, ou eu teria que cultivá-lo em uma fazenda de renderização comercial.
Obviamente, a aceleração tem um preço, que é um pequeno aumento na complexidade do seu fluxo de trabalho. Você precisa definir suas composições para renderizar como sequências de imagens e usar as configurações de várias máquinas para que cada representante procure o próximo quadro não renderizado. No final, se você precisar de um arquivo de filme, precisará fazer uma passagem de compactação, mas, no meu caso, eu normalmente domino para uma sequência png ou tiff e, em seguida, corro cópias codificadas em h.264 para clientes do mestre.
E você precisa saber um pouco sobre a linha de comando. Pare de parecer tão triste - isso é uma coisa boa, uma coisa boa.
janelas
A linha de comando do PowerShell que usei nesse cenário foi:
Isso é executado em uma janela do PowerShell (digite WindowsRe digite powershell.exe ). Essa é uma linguagem de script de shell integrada às versões modernas do Windows que podem ser usadas para todos os tipos de coisas.
Mac Usando a versão Bash> 3 (shell padrão nas versões atuais do OSX) ou mesmo com shell mais frios, como o zsh, você pode usar este script:
O script funciona assim:
start-process
comando PS ou com o&
in bash. Obviamente, altere o caminho para aerender.exe / aerender e seu projeto para o que estiver na sua máquina. Uma maneira rápida e precisa de preencher caminhos com a linha de comando é arrastar arquivos e pastas para dentro dela. Também o uso tabde caminhos para preencher automaticamente economiza muitas digitações e erros de digitação.Se você tiver várias composições, poderá renderizá-las como filmes, mas iniciar um novo renderizador para cada uma. Se você chamar o aerender.exe assim
ele renderizará a terceira composição na fila de renderização. Colocando-o em um script, você pode fazer:
janelas
Mac
Isso iniciará uma nova instância do aerender para cada composição - mais uma vez, altere 12 para quantas composições houver na fila. Observe que essa técnica pode ter problemas se você tiver muitas composições em sua fila - se você usar toda a sua memória física, as coisas ficarão tremendo rapidamente. Para manter o número de instâncias baixo, é necessário verificar quantos processos do aerender estão em execução e só iniciar um novo quando um processo em execução terminar. Uma solução mais simples é fazer quantas cópias do seu projeto você desejar que haja instâncias, com a fila de renderização dividida entre elas e, em seguida, renderizá-las todas simultaneamente. Portanto, o segmento de renderização um renderizaria comps 1,2,3, o segmento de renderização dois faria 3,4,5 e assim por diante.
Mais detalhes aqui (meu blog).
fonte
Enquanto esta pergunta já foi respondida; minha recomendação:
Use AfterEffects para sua renderização se você tiver um sistema com um número alto de núcleos e muita RAM.
Minha estação de trabalho principal é um Dual E5-2697 v2 (24 núcleos lógicos / 48 hiperroscados); com 128 GB de RAM.
Se você precisar fazer simplesmente uma transcodificação de um arquivo; ou pode usar o Bridge para importar seu projeto PPro para o AE (exceto que suas edições permanecerão intactas); o recurso em Memória (Editar -> Preferências) permite usar o Multi-threading.
Dito isto:
Se estou fazendo apenas uma renderização direta; ou algo simples; Eu posso usar o AE para alocar 32 dos meus 48 núcleos HT; Além disso; Eu posso alocar 3 GB de ram para cada Thread; que depende do tipo de codificação que estou fazendo, entre 2-100x mais rápido em termos de renderização, mesmo com minhas GPUs Dual Titan Black.
Isso é claro; aplica-se apenas se você tiver muitos núcleos; e MUITO RAM ...
Pré estreia; renderização através do AME; será limitado a usar apenas 1 Thread, infelizmente; e dependerá da sua GPU, a menos que você a tenha desativado para usar a renderização de software em Configurações do projeto.
Espero que isto ajude!
fonte
Como acelerar o Media Encoder para usar 100% da sua CPU? Aqui está um exemplo: Crie um arquivo: settings.ini coloque dentro dele
Modo [Configurações] = desenvolvedor mthread = habilitado mthreadcount = 3 (para uma máquina com rosca de 4 núcleos 8, por exemplo, 7) sli = falso slimode = todas as prioridades = alta escala = baixa nuvem = carga falsa = necessidade de alto-falante = 2
Coloque nas pastas executáveis do Adobe Premiere, After Effects e Media Encoders.
Para uma máquina com quatro núcleos / quatro threads como a minha, isso fez o Media Encoder pular de um núcleo para usar 96% dos quatro. Você deve assistir ao vídeo do youtube "Render 300X FASTER | Premiere / After Effects / Media Encoder" Estou usando com sucesso isso nos produtos CC 2018.
fonte
Feche o After Effects ao renderizar com o Media Encoder. Ao fazer isso, meu uso da CPU passou de 30% para 60%. Eu acho que porque a Adobe não está poupando energia da CPU para trabalhar de forma simultânea no AE.
fonte
Posso sugerir que isso ainda é um problema daqui a cinco anos! Você precisa fechar todos os aplicativos da Adobe e, em seguida, abrir o Media Encoder (se é de onde você está renderizando) PRIMEIRO, em seguida, atribuirá todos os recursos disponíveis para esse aplicativo, não o vi compartilhar dinamicamente recursos, simplesmente aloca Tempo de CPU de acordo com o número de aplicativos abertos quando você inicia o aplicativo Adobe (isso é repetível, tente abrir o LR, por exemplo, antes da renderização, ele usará apenas 10% da CPU - abra o AME primeiro e depois o Lightroom e você obtenha 100%)
Eu tenho um aumento de 4x nos tempos de renderização por causa disso. Espero que ajude. O "gerenciamento de recursos" da Adobe é péssimo.
fonte