En mi máquina, Adobe Media Encoder es muy lento. Se necesitan 12 horas para reproducir 4 minutos de video de 1080p para YouTube (el video se basa en el proyecto Adobe After Effects con un archivo MOV original y cuatro efectos: curvas, eliminar grano, máscara de enfoque y matiz / saturación.
Me di cuenta de que no usa toda la memoria disponible, ni intenta usar tanta CPU como sea posible. Aquí está el uso real durante el proceso de codificación:
¿Hay alguna manera de acelerar el proceso de codificación convenciendo a la aplicación para que use toda la CPU y toda la memoria disponible?
Como nota al margen, ¿se espera que sea tan lento? No puedo imaginar que las compañías de creación de películas lo usen para codificar una película que generalmente dura un poco más de 4 minutos y tiene un poco más de cuatro efectos básicos, incluso con un centro de datos completo. Eliminar el efecto "eliminar grano" acelera la codificación de 12 horas a 3:30.
fuente
Respuestas:
Puede que no haya un camino. Según su descripción del problema, parece que el procesamiento es la parte lenta. Si bien el codificador de video en sí puede realizar un procesamiento de subprocesos múltiples, es posible que el procesamiento de la imagen que está realizando no pueda hacerlo. Por defecto, Premiere siempre ha realizado el mayor procesamiento paralelo posible para mí y con frecuencia veo que alcanza el 99% del uso de la CPU en mi escritorio de cuatro núcleos con subprocesos múltiples.
El problema es más probable que algunos de sus efectos requieran el resultado del cuadro anterior para comenzar a procesarse en el cuadro siguiente. Si este es el caso, no hay una manera fácil de dividirlo en varios subprocesos y eso haría imposible alcanzar el uso del 100% de la CPU en una computadora de múltiples núcleos.
Del mismo modo, no se esperaría que la RAM limite la codificación, ya que es una operación de transmisión. Hay algunas cosas que pueden necesitar rastrearse con el tiempo, pero en su mayor parte, es una operación de flujo con datos que salen tan rápido como entran, por lo que no hay mucha acumulación de datos.
Hay dos cosas principales que pueden mejorar el rendimiento. El primero es el procesamiento de GPU. Las CPU de uso general no son realmente ideales para muchas tareas de procesamiento de audio / video. Están diseñados para realizar una amplia variedad de operaciones de propósito general, pero no son súper eficientes en las operaciones básicas. Las GPU, por otro lado, están diseñadas para realizar operaciones simples muy rápidamente. A menudo pueden reducir bastante las tareas de procesamiento de video.
Se puede encontrar una mejora adicional en el hardware especialmente diseñado. Existen tarjetas profesionales diseñadas específicamente para procesar video y proporcionar procesamiento y codificación de video en tiempo real. A menudo se incluyen en estaciones de trabajo de edición de video profesional de alta gama, pero el precio puede ser bastante alto. No es raro que una estación de trabajo de edición de video profesional pueda subir del rango de $ 15,000 a $ 20,000 o incluso más, solo por hardware. Pueden ir por mucho menos si no te importa esperar renders (yo trabajo en un sistema de $ 2,350 para mi trabajo de video) pero también pueden llegar a ser muy altos.
fuente
No estoy contento cuando renderizo a menos que realmente pueda oler plástico quemado, nada es más frustrante que AE diciéndote que tu renderizado no se completará hasta la muerte por calor del universo, mientras que al mismo tiempo tu CPU apenas es levantando un sudor Sin embargo, hay algo que puede hacer al respecto.
After Effects viene con un procesador de línea de comandos llamado aerender.exe simple ol ' aerender en mac). Está en la carpeta del programa AE. Usarlo es un poco desafiante para las personas que no están acostumbradas al poder de la línea de comando - = impresionante - = , pero definitivamente vale la pena hacerlo si estás haciendo un poco de trabajo pesado en After Effects, y quieres poder aprovechar todo el potencia de su máquina
Lo bueno de esto es que puede ejecutar tantas instancias como desee. Lo que normalmente hago es seguir agregando instancias hasta que empiezo a tener poca memoria. Tengo una máquina de 40 núcleos físicos y se necesita mucho para maximizar la CPU, pero aquí hay una captura de pantalla donde finalmente lo logré. Cada una de esas ventanas es una nueva instancia del motor de renderizado AE:
En ese ejemplo, la velocidad por cuadro de cada renderizador apenas disminuyó en comparación con una sola instancia, por lo que logré un aumento de velocidad de aproximadamente 4000%. YMMV, dependiendo de cuántos núcleos y cuánta ram tiene su máquina. Me esforcé porque tenía un proyecto que involucraba composiciones muy largas y razonablemente complejas. El proyecto simplemente no habría terminado sin esta técnica, o habría tenido que cultivarlo en una granja de render comercial.
Por supuesto, la aceleración tiene un precio, que es un ligero aumento en la complejidad de su flujo de trabajo. Debe configurar sus composiciones para renderizar como secuencias de imágenes, y utilizar la configuración de varias máquinas para que cada renderizador busque el siguiente fotograma sin renderizar. Al final, si necesita un archivo de película, tendrá que hacer un pase de compresión, pero en mi caso generalmente masterizo a una secuencia png o tiff, y luego ejecuto copias codificadas h.264 para clientes desde el maestro.
Y necesita saber un poco sobre la línea de comando. Deja de parecer tan triste, eso es BUENO, eso es BUENO.
Ventanas
La línea de comando de PowerShell que utilicé en ese escenario fue:
Esto se ejecuta en una ventana de PowerShell (escriba WindowsRy luego escriba Powershell.exe ). Este es un lenguaje de script de shell integrado en versiones modernas de Windows que se puede utilizar para todo tipo de cosas.
Mac Usando la versión Bash> 3 (shell predeterminado en las versiones actuales de OSX), o incluso con shells más geniales como zsh, puede usar este script:
El guión funciona así:
start-process
comando en PS o con&
in bash, obviamente cambie la ruta a aerender.exe / aerender y su proyecto a lo que sea que esté en su máquina. Una forma rápida y precisa de rellenar rutas con la línea de comando es arrastrar archivos y carpetas a ella. Además, usar las tabrutas para autocompletar ahorra muchos tipeos y errores tipográficos.Si tiene varias composiciones, puede renderizarlas como películas pero comenzar un nuevo renderizador para cada una. Si invocas aerender.exe como este
renderizará la tercera compilación en la cola de renderizado. Poniéndolo en un script que puedes hacer:
Ventanas
Mac
Eso iniciará una nueva instancia de entrega para cada compilación; una vez más, cambie el 12 a la cantidad de compilaciones que haya en la cola. Tenga en cuenta que esta técnica puede tener problemas si tiene muchas compilaciones en su cola; si usa toda su memoria física, las cosas se detendrán rápidamente. Para mantener baja la cantidad de instancias, debe verificar cuántos procesos de procesamiento se están ejecutando y solo iniciar uno nuevo cuando finalice uno en ejecución. Una solución más simple es hacer tantas copias de su proyecto como desee que haya instancias, con la cola de representación dividida entre ellas, y luego representarlas todas al mismo tiempo. Entonces, el hilo de renderizado uno estaría renderizando comps 1,2,3, el hilo de renderizado dos estaría haciendo 3,4,5, y así sucesivamente.
Más detalles aquí (mi blog).
fuente
Si bien esta pregunta ya ha sido respondida; mi recomendación:
Use AfterEffects para su renderizado si tiene un sistema con una gran cantidad de núcleos y mucha RAM.
Mi estación de trabajo principal es un Dual E5-2697 v2 (24 núcleos lógicos / 48 Hyper Threaded); con 128 GB de RAM.
Si tiene que hacer simplemente una transcodificación de un archivo; o puede usar Bridge para importar su proyecto PPro a AE (salvo que sus ediciones permanezcan intactas); la función en Memoria (Editar -> Preferencias) le permite usar Multi-threading.
Habiendo dicho eso:
Si solo estoy haciendo un render directo; o algo simple; Puedo usar AE para asignar 32 de mis 48 núcleos HT; Adicionalmente; Puedo asignar 3 GB de RAM a cada subproceso; que depende de qué tipo de codificación estoy haciendo, entre 2 y 100 veces más rápido en términos de renderizado incluso con mis GPU Dual Titan Black.
Esto por supuesto; solo aplica si tienes MUCHOS núcleos; y MUCHO ram ...
Estreno; renderizado a través de AME; desafortunadamente se limitará a usar solo 1 hilo; y dependerá de su GPU a menos que lo haya deshabilitado para usar el procesamiento de software en Configuración del proyecto.
¡Espero que esto ayude!
fuente
¿Cómo acelerar Media Encoder para usar el 100% de tu CPU? Aquí hay un ejemplo: Cree un archivo: settings.ini coloque dentro de él
Modo [Configuración] = desarrollador mthread = habilitado mthreadcount = 3 (para una máquina de 4 hilos con 8 hilos, digamos, 7) sli = falso slimode = toda prioridad = alta escala = baja nube = carga falsa cuando es necesario = altavoces verdaderos = 2
Coloque en las carpetas ejecutables Adobe Premiere, After Effects y Media Encoders.
Para una máquina de cuatro núcleos / 4 hilos como la mía, esto hizo que Media Encoder saltara de 1 núcleo a usar el 96% de los cuatro. Debes ver el video de YouTube "Render 300X FASTER | Premiere / After Effects / Media Encoder". Lo estoy usando con éxito con los productos CC 2018.
fuente
Cierre After Effects mientras renderiza con Media Encoder. Al hacerlo, mi uso de CPU pasó del 30% al 60%. Supongo que porque Adobe no está ahorrando energía de la CPU para trabajar simuladamente en AE.
fuente
¿Puedo sugerir que esto sigue siendo un problema 5 años después? Debe cerrar todas las aplicaciones de Adobe y luego abrir Media Encoder (si es allí desde donde está renderizando) PRIMERO, luego asignará todos los recursos disponibles para esa aplicación, no lo he visto compartir recursos dinámicamente, simplemente asigna Tiempo de CPU de acuerdo con la cantidad de aplicaciones abiertas cuando inicia la aplicación de Adobe (esto es repetible, intente abrir LR por ejemplo antes de renderizar, solo usará el 10% de la CPU; luego abra AME primero y luego lightroom y verá obtener 100%)
Obtuve un aumento de 4 veces en los tiempos de renderizado debido a esto. Espero eso ayude. La "gestión de recursos" de Adobe apesta.
fuente