Auf meinem Computer ist Adobe Media Encoder sehr langsam. Das Rendern von 4 Minuten 1080p-Video für YouTube dauert 12 Stunden (das Video basiert auf dem Adobe After Effects-Projekt mit einer Original-MOV-Datei und vier Effekten: Kurven, Körnung entfernen, unscharfe Maske und Farbton / Sättigung.
Mir ist aufgefallen, dass nicht der gesamte verfügbare Speicher belegt wird und auch nicht versucht wird, so viel CPU wie möglich zu verwenden. Hier ist die tatsächliche Verwendung während des Codierungsprozesses:
Gibt es eine Möglichkeit, den Codierungsprozess zu beschleunigen, indem die Anwendung davon überzeugt wird, die gesamte CPU und den gesamten verfügbaren Speicher zu nutzen?
Wird erwartet, dass es so langsam ist? Ich kann mir unmöglich vorstellen, dass Filmemacher damit einen Film codieren, der normalerweise etwas länger als 4 Minuten ist und etwas mehr als vier grundlegende Effekte hat, selbst mit einem ganzen Rechenzentrum. Durch Entfernen des Effekts "Körnung entfernen" wird die Codierung von 12 Stunden auf 3:30 beschleunigt.
quelle
Antworten:
Es könnte keinen Weg geben. Basierend auf Ihrer Beschreibung des Problems scheint die Verarbeitung der langsame Teil zu sein. Während der Videocodierer selbst Multithread-Verarbeitung ausführen kann, ist die von Ihnen ausgeführte Bildverarbeitung möglicherweise nicht in der Lage. Standardmäßig hat Premiere für mich immer so viel Parallelverarbeitung wie möglich durchgeführt, und ich sehe häufig, dass die CPU-Auslastung auf meinem Quad-Core-Desktop mit Hyper-Thread 99% erreicht.
Das Problem ist höchstwahrscheinlich, dass für einige Ihrer Effekte das Ergebnis des vorherigen Frames erforderlich ist, um mit der Verarbeitung des nächsten Frames zu beginnen. Wenn dies der Fall ist, gibt es keine einfache Möglichkeit, es auf mehrere Threads aufzuteilen, und dies würde es unmöglich machen, eine 100% ige CPU-Auslastung auf einem Multi-Core-Computer zu erreichen.
In ähnlicher Weise wird nicht erwartet, dass der RAM die Codierung begrenzt, da es sich um eine Stream-Operation handelt. Es gibt einige Dinge, die möglicherweise im Laufe der Zeit verfolgt werden müssen, aber zum größten Teil handelt es sich um eine Stream-Operation, bei der Daten so schnell ausgehen, wie sie eingehen, sodass sich nicht viel Daten ansammeln.
Es gibt zwei Hauptpunkte, die die Leistung verbessern können. Der erste ist die GPU-Verarbeitung. Allzweck-CPUs sind für viele Audio- / Videoverarbeitungsaufgaben nicht wirklich ideal. Sie sind für eine Vielzahl von Allzweckoperationen konzipiert, bei Grundoperationen jedoch nicht besonders effizient. GPUs hingegen sind so konzipiert, dass einfache Vorgänge sehr schnell ausgeführt werden können. Sie können Videoverarbeitungsaufgaben oft erheblich reduzieren.
Eine weitere Verbesserung ist die speziell entwickelte Hardware. Es gibt professionelle Karten, die speziell für die Verarbeitung von Videos entwickelt wurden und die Echtzeitverarbeitung und -codierung von Videos ermöglichen. Diese sind häufig in professionellen High-End-Videobearbeitungsarbeitsplätzen enthalten, aber der Preis kann recht hoch sein. Es ist nicht ungewöhnlich, dass eine professionelle Videobearbeitungs-Workstation nur für Hardware im Bereich von 15.000 bis 20.000 US-Dollar oder sogar mehr aufstehen kann. Sie können viel weniger kosten, wenn es Ihnen nichts ausmacht, auf Renderings zu warten (ich arbeite an einem 2.350-Dollar-System für meine Videoarbeit), aber sie können auch sehr hoch werden.
quelle
Ich bin nicht glücklich, wenn ich rendere, es sei denn, ich kann tatsächlich brennendes Plastik riechen. Nichts ist frustrierender als AE, das Ihnen sagt, dass Ihr Rendern erst nach dem Hitzetod des Universums abgeschlossen wird, während gleichzeitig Ihre CPU kaum ausgelastet ist ins Schwitzen kommen. Sie können jedoch etwas dagegen tun.
After Effects wird mit einem Befehlszeilen-Renderer namens aerender.exe ( einfacher alter Aerender auf dem Mac) geliefert . Es befindet sich im AE-Programmordner. Die Verwendung ist für Leute, die nicht an die - = awesome - = Leistung der Befehlszeile gewöhnt sind, eine Herausforderung , aber es lohnt sich auf jeden Fall, wenn Sie in After Effects viel heben und in der Lage sein möchten, alle Funktionen zu nutzen Leistung Ihrer Maschine.
Das Schöne daran ist, dass Sie so viele Instanzen ausführen können, wie Sie möchten. Normalerweise füge ich so lange Instanzen hinzu, bis mir der Arbeitsspeicher ausgeht. Ich habe eine Maschine mit 40 physischen Kernen und es braucht viel Zeit, um die CPU zu maximieren, aber hier ist ein Screenshot, in dem ich es endlich geschafft habe. Jedes dieser Fenster ist eine neue Instanz der AE-Render-Engine:
In diesem Beispiel hat sich die Geschwindigkeit pro Frame jedes Renderers im Vergleich zu einer einzelnen Instanz kaum verringert, sodass ich eine Geschwindigkeitssteigerung von ungefähr 4000% erzielt habe. YMMV, abhängig davon, wie viele Kerne und wie viel RAM Ihre Maschine hat. Ich habe mich bemüht, weil ich ein Projekt mit sehr langen und einigermaßen komplexen Kompositionen hatte. Das Projekt wäre ohne diese Technik einfach nicht zustande gekommen, oder ich hätte es auf eine kommerzielle Renderfarm bringen müssen.
Natürlich hat die Beschleunigung ihren Preis, was eine leichte Erhöhung der Komplexität Ihres Workflows bedeutet. Sie müssen Ihre Comps so einstellen, dass sie als Bildsequenzen gerendert werden, und die Einstellungen für mehrere Computer verwenden, damit jeder Renderer nach dem nächsten nicht gerenderten Frame sucht. Wenn Sie am Ende eine Filmdatei benötigen, müssen Sie einen Komprimierungsdurchlauf durchführen, aber in meinem Fall beherrsche ich normalerweise eine PNG- oder TIFF-Sequenz und führe dann h.264-codierte Kopien für Clients vom Master aus.
Und Sie müssen ein wenig über die Befehlszeile wissen. Hör auf, so bedrückt auszusehen - das ist eine gute Sache, das ist eine gute Sache.
Windows
Die Powershell-Befehlszeile, die ich in diesem Szenario verwendet habe, war:
Dies wird in einem Powershell-Fenster ausgeführt (geben Sie Powershell.exe ein WindowsRund geben Sie dann ein ). Dies ist eine Shell-Skriptsprache, die in moderne Windows-Versionen integriert ist und für alle Arten von Dingen verwendet werden kann.
Mac Mit Bash Version> 3 (Standard-Shell in aktuellen OSX-Versionen) oder mit cooleren Shells wie zsh können Sie dieses Skript verwenden:
Das Skript funktioniert folgendermaßen:
start-process
Befehl in PS oder mit&
in bash gestartet. Ändern Sie natürlich den Pfad zu aerender.exe / aerender und Ihr Projekt zu dem, was sich auf Ihrem Computer befindet. Eine schnelle und genaue Möglichkeit, Pfade mit der Befehlszeile auszufüllen, besteht darin, Dateien und Ordner hineinzuziehen. Auch das tabautomatische Ausfüllen der Pfade spart viel Tipp- und Tippfehler.Wenn Sie mehrere Comps haben, können Sie diese als Filme rendern, aber für jeden einen neuen Renderer starten. Wenn Sie aerender.exe wie folgt aufrufen
Es wird die dritte Komposition in der Renderwarteschlange gerendert. Wenn Sie es in ein Skript einfügen, können Sie Folgendes tun:
Windows
Mac
Dadurch wird für jede Komposition eine neue Aerender-Instanz gestartet. Ändern Sie die 12 erneut in die Anzahl der Kompositionen in der Warteschlange. Beachten Sie, dass diese Technik zu Problemen führen kann, wenn Sie viele Comps in Ihrer Warteschlange haben. Wenn Sie all Ihren physischen Speicher verwenden, werden die Dinge ziemlich schnell zum Erliegen kommen. Um die Anzahl der Instanzen gering zu halten, müssen Sie überprüfen, wie viele Aerender-Prozesse ausgeführt werden, und erst dann einen neuen starten, wenn ein laufender abgeschlossen ist. Eine einfachere Problemumgehung besteht darin, so viele Kopien Ihres Projekts zu erstellen, wie Sie möchten, dass Instanzen vorhanden sind, wobei die Renderwarteschlange zwischen ihnen aufgeteilt wird, und sie dann alle gleichzeitig zu rendern. Rendering-Thread 1 würde also Comps 1,2,3 rendern, Rendering-Thread 2 würde 3,4,5 ausführen und so weiter.
Mehr Details hier (mein Blog).
quelle
Während diese Frage bereits beantwortet wurde; meine Empfehlung:
Verwenden Sie AfterEffects für Ihr Rendering, wenn Sie ein System mit einer hohen Anzahl von Kernen und viel RAM haben.
Meine Hauptarbeitsstation ist eine Dual E5-2697 v2 (24 logische / 48 Hyper-Threaded-Kerne). mit 128 GB RAM.
Wenn Sie einfach eine Transcodierung einer Datei durchführen müssen; oder Sie können Bridge verwenden, um Ihr PPro-Projekt in AE zu importieren (sofern Ihre Änderungen nicht erhalten bleiben). Mit der Funktion unter Speicher (Bearbeiten -> Einstellungen) können Sie Multithreading verwenden.
Davon abgesehen:
Wenn ich nur ein gerades Rendern mache; oder etwas Einfaches; Ich kann AE verwenden, um 32 meiner 48 HT-Kerne zuzuweisen. zusätzlich; Ich kann jedem Thread 3 GB RAM zuweisen. Dies hängt davon ab, welche Art von Codierung ich mache, und zwar sogar mit meinen Dual Titan Black-GPUs zwischen 2 und 100 Mal schneller beim Rendern.
Das natürlich; gilt nur, wenn Sie viele Kerne haben; und viel Widder ...
Premiere; Rendern durch AME; wird leider auf die Verwendung von nur 1 Thread beschränkt sein; und wird sich auf Ihre GPU verlassen, es sei denn, Sie haben diese deaktiviert, um das Software-Rendering unter Projekteinstellungen zu verwenden.
Hoffe das hilft!
quelle
Wie kann ich Media Encoder beschleunigen, um 100% Ihrer CPU zu nutzen? Hier ein Beispiel: Erstellen Sie eine Datei: settings.ini wird darin platziert
[Einstellungen] Modus = Entwickler mthread = aktiviert mthreadcount = 3 (für eine 4-Kern-8-Thread-Maschine sagen wir 7) sli = falscher Slimode = alle Priorität = hohe Skalierung = niedrige Wolke = falsche Last, wenn erforderlich = echte Lautsprecher = 2
Platzieren Sie sie in ausführbaren Ordnern von Adobe Premiere, After Effects und Media Encoders.
Bei einer Quad-Core / 4-Threaded-Maschine wie meiner sprang der Media Encoder von 1 Core auf 96% aller vier. Sie müssen das YouTube-Video "300X SCHNELLER rendern | Premiere / After Effects / Media Encoder" ansehen. Ich verwende es erfolgreich mit CC 2018-Produkten.
quelle
Schließen Sie After Effects beim Rendern mit Media Encoder. Dadurch stieg meine CPU-Auslastung von 30% auf 60%. Ich denke, weil Adobe nicht die CPU-Leistung spart, um gleichzeitig in AE zu arbeiten.
quelle
Kann ich vorschlagen, dass dies auch nach 5 Jahren noch ein Problem ist? Sie müssen alle Adobe-Apps schließen und dann zuerst den Media Encoder öffnen (wenn Sie von dort aus rendern). Dann werden der App alle verfügbaren Ressourcen zugewiesen. Ich habe nicht gesehen, dass sie Ressourcen dynamisch freigibt. Sie werden einfach zugewiesen Die CPU-Zeit richtet sich nach der Anzahl der Apps, die beim Starten der Adobe-App geöffnet sind (dies ist wiederholbar. Versuchen Sie beispielsweise, LR vor dem Rendern zu öffnen. Es werden nur 10% der CPU verbraucht. Öffnen Sie dann zuerst AME, dann Lightroom und Sie 100% erhalten)
Dadurch habe ich die Renderzeiten um das Vierfache erhöht. Ich hoffe es hilft. Das "Ressourcenmanagement" von Adobe ist scheiße.
quelle