Heim >Web-Frontend >js-Tutorial >AWS Sideo Thumbnail Generator – Der serverlose Node.js-Lösungsleitfaden
HINWEIS: Teilen Sie es nicht in zwei Teile auf. Es gibt hier nicht genügend Text, um eine Aufteilung zu rechtfertigen, und der Artikel konzentriert sich auf die Lösung und nicht auf die Diskussion der Optionen.
Müssen Sie Video-Thumbnails effizient und kostengünstig in großem Maßstab erstellen? Lassen Sie uns mit AWS Lambda eine wirklich serverlose Lösung erstellen, deren Betrieb im Vergleich zur Verwendung dedizierter Medienverarbeitungsdienste nur ein paar Cent kostet.
Die Lösung besteht aus einer Node.js-Lambda-Funktion, die:
Es ist weder besonders einfach noch billig, Miniaturansichten in großem Maßstab zu erstellen. Bei Videos ist der Kostenfaktor besonders wichtig – bei Bildern müssen Sie lediglich die Größe ändern, sie zuschneiden und die Ausgabe desselben Typs speichern. Sie können diese Verantwortung auf Cloud-Dienste von Drittanbietern übertragen, um sich auf die Bereitstellung anderer Funktionen zu konzentrieren, oder mit nur wenig Arbeit die Aufgabe erledigen, ohne Ihre AWS VPC zu verlassen. Bei Videos ist die Sache jedoch anders. Videodateien sind viel größer, wir müssen viele verschiedene Kodierungsstandards unterstützen und das Endergebnis ist kein Video mehr – wir extrahieren im Wesentlichen Standbilder.
Bei der Suche nach Optionen greife ich immer auf Lösungen zurück, die für die Plattform, auf der sich die Anwendung befindet, nativ sind. In AWS ist das MediaConvert oder MediaLive. Beide eignen sich hervorragend, wenn Sie eine professionelle Videoverarbeitung benötigen, aber nur ein Miniaturbild aus einem Video aufnehmen möchten ... nun, sie können das auf jeden Fall, aber sind sie entwickelt, um solche Anwendungsfälle zu bewältigen? ? Nicht wirklich.
So überraschend es auch sein mag, AWS verfügt über keinen speziellen Dienst zum Generieren von Miniaturansichten. Die verfügbaren Lösungen konzentrieren sich auf andere Anwendungsfälle, z. B. die Bereitstellung von Unterstützung für Streaming-Medien oder die Ausführung erweiterter Videotransformationsaufgaben.
Die Probleme werden ganz offensichtlich, wenn man sich die Anforderungen für die Erstellung einer solchen Funktion mit diesen Diensten ansieht
Sollte das Erstellen einiger Video-Thumbnails mehr kosten als Ihr Morgenkaffee? ☕ Das liegt einfach daran, dass diese Dienste so leistungsstark sind, dass sie für einfache Aufgaben wie die Erstellung von Miniaturansichten zu viel des Guten sind.
Die tatsächlichen Kosten für AWS Media-Services liegen nicht nur in Dollar, sondern auch in der Komplexität, die Sie oft nicht benötigen.
Jedes Mal, wenn ich auf eine neue Anforderung stoße, stellt sich mein Geist auf den Modus „Das perfekte Werkzeug für den Job finden“ ein. Ich habe gepredigt, wie wichtig es ist, sich nicht auf das zu verlassen, was man kennt, und immer so viele Alternativen wie möglich zu erkunden, damit ich vielleicht wie eine kaputte Schallplatte klinge ... aber ich schätze, ich mag die Melodie, die diese Platte spielt! ??
Man kann es auch als Krankheit bezeichnen. Ich bin mir meiner technischen Zwangsstörungsprobleme voll bewusst... ?
Aber ich schweife ab...
Sicher gibt es auch andere Lösungen, aber diese bringen oft ihre eigenen Probleme mit sich:
Lassen Sie uns etwas bauen, das nicht nur günstiger ist, sondern sich auch genau auf das konzentriert, was wir tatsächlich brauchen – eine serverlose Lösung, die Video-Thumbnails für buchstäblich ein paar Cent generiert. ?
Das System nutzt diese AWS-Dienste und -Tools:
Wenn ein Video in den Quell-S3-Bucket hochgeladen wird, löst es ein Ereignis aus, das die Verarbeitungsanforderung in die Warteschlange stellt. Eine Lambda-Funktion nimmt es auf und verarbeitet es mithilfe von FFmpeg, das in einem Docker-Container ausgeführt wird. Die generierten Miniaturansichten werden dann in einem Ziel-S3-Bucket gespeichert. Behebbare vorübergehende Probleme wie Drosselung oder infrastrukturbezogene Probleme werden automatisch erneut versucht, während alle anderen fehlgeschlagenen Ereignisse zu Prüfzwecken automatisch an eine Warteschlange für unzustellbare Nachrichten gesendet werden.
Der Dienst generiert automatisch Video-Thumbnails in zwei Größen. Die größere Version enthält ein halbtransparentes Videosymbol in der Mitte des Rahmens, das Benutzern hilft, Videoinhalte schnell zu identifizieren.
Beispielprojekt
Service
Hier ist unsere Docker-Datei, die FFmpeg mit Lambda verpackt:
Lassen Sie uns die Kosten für die Verarbeitung von 1000 Videos pro Monat aufschlüsseln:
Das ist eine Kostenreduzierung von 99,7 %! ?
Obwohl diese Lösung großartig ist, ist sie nicht ohne Fallstricke:
Das ist erst der Anfang! Sie können diese Lösung erweitern auf:
Wir haben eine kostengünstige, skalierbare Lösung für die Erstellung von Video-Thumbnails entwickelt, die Ihr Budget nicht sprengt. Sie zahlen nicht mehr für Funktionen, die Sie nicht benötigen!
Denken Sie daran: Manchmal ist die beste Lösung nicht die teuerste oder komplexeste – es ist diejenige, die genau das tut, was Sie brauchen, nicht mehr und nicht weniger.
Fanden Sie das hilfreich? Folgen Sie mir für weitere AWS- und serverlose Inhalte! Und wenn Ihre Miniaturansichten wie moderne Kunst und nicht wie Ihr Video aussehen ... prüfen Sie zunächst Ihr Videoformat und schreiben Sie dann unten einen Kommentar! ?
Spaß beiseite, ich würde gerne von Ihren Erfahrungen mit der Videoverarbeitung in AWS hören. Haben Sie andere kreative Möglichkeiten zur Kostenoptimierung gefunden? Teilen Sie es in den Kommentaren!
Obwohl diese Lösung in der Produktion kampferprobt wurde, testen Sie sie bitte gründlich in Ihrer eigenen Umgebung, bevor Sie sie bereitstellen. Falls mal etwas Feuer fängt, habe ich ein tolles Rezept für Marshmallows! ?
Warum Docker mit Lambda – nicht die erste Wahl, manchmal die einzige Wahl, Layer-Alternative
Der Betrieb ist im Vergleich zu den AWS Media-Diensten supergünstig
Es geht schnell: Vergleichen Sie verschiedene Dateigrößen
Testbares Ffmpeg
Das obige ist der detaillierte Inhalt vonAWS Sideo Thumbnail Generator – Der serverlose Node.js-Lösungsleitfaden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!