Heim >Web-Frontend >js-Tutorial >AWS Sideo Thumbnail Generator – Der serverlose Node.js-Lösungsleitfaden

AWS Sideo Thumbnail Generator – Der serverlose Node.js-Lösungsleitfaden

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 10:45:11195Durchsuche

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.

Was wir bauen werden

Die Lösung besteht aus einer Node.js-Lambda-Funktion, die:

  • Verarbeitet gängige Videoformate
  • Skalierung je nach Arbeitsbelastung
  • Implementiert Wiederholungslogik für fehlgeschlagene Vorgänge
  • Bereitstellung über Infrastruktur als Code
  • Kosten pro Video den Bruchteil eines Cents

Warum benutzerdefiniert

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.

AWS Native = Superteuer

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

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

  • Bei der Arbeit mit AWS Media Services ist es nicht möglich, eine Verarbeitungspipeline zu erstellen, für die keine Videoausgabe definiert ist. Sie müssen ein ganzes Video verarbeiten und das Ergebnis verwerfen, um nur die Miniaturansichten zu verwenden, die ein Nebenprodukt dieses Prozesses sind
  • Daher ist es als Thumbnail-Generator sehr teuer – die Zahlung von 0,0075 $ pro Minute verarbeiteten Videos scheint nicht viel zu sein, aber es summiert sich sehr schnell – für 1.000 Videos sind die Verarbeitungskosten jeweils 15 Minuten lang würde über 100 $ liegen

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... ?

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Aber ich schweife ab...

Jenseits von AWS

Sicher gibt es auch andere Lösungen, aber diese bringen oft ihre eigenen Probleme mit sich:

  • Externe Dienste berechnen normalerweise pro API-Aufruf oder verarbeiteter Datenmenge
  • Sie müssen Ihre Videos zur Verarbeitung auf externe Dienste hochladen, was noch höhere Kosten für ausgehenden Traffic bedeutet
  • Sie lassen sich möglicherweise nicht gut skalieren, was zu einer Drosselung bei der Handhabung führt

Eine maßgeschneiderte, maßgeschneiderte Lösung

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:

  • Amazon S3 – Speicher für Quellvideos und generierte Miniaturansichten
  • AWS Lambda – Serverlose Rechenumgebung
  • FFmpeg – Videoverarbeitungs-Framework
  • Docker – Containerverpackung für FFmpeg- und Lambda-Code
  • Amazon SQS – Nachrichtenwarteschlange zur Verarbeitungskoordination

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

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

  • Von GH ziehen

Service

  • Orchestrierung Videoverarbeitungs-Utility
  • FFmpeg
  • zwei Miniaturbildtypen
  • verschiedene Größen, eine davon mit Overlay FFmpeg in einem Container
  • So machen wir Ffmpeg CLI für Lambda verfügbar
  • Docker-Datei Bereitstellung
  • Container-Build
  • Serverlose Bereitstellung
  • Dockerisierte Lambda-Definition Testen
  • int
  • e2e Serverlos
  • Gibt es an dieser Stelle noch etwas?

Der magische Behälter?

Hier ist unsere Docker-Datei, die FFmpeg mit Lambda verpackt:

Zeig mir das Geld! ?

Lassen Sie uns die Kosten für die Verarbeitung von 1000 Videos pro Monat aufschlüsseln:

AWS MediaConvert

  • 0,08 $ pro Minute Video
  • 1000 Videos × 0,08 $ = 80 $

Unsere Lösung

  • Lambda: 1024 MB × 10 s × 1000 = 0,17 $
  • S3: Speicher GET/PUT = $0,05
  • Gesamt: 0,22 $

Das ist eine Kostenreduzierung von 99,7 %! ?

AWS Sideo Thumbnail Generator - The Serverless Node.js Solution Guide

Was könnte schief gehen? ?

Obwohl diese Lösung großartig ist, ist sie nicht ohne Fallstricke:

  • Speicherverbrauch: FFmpeg kann speicherhungrig sein. Wenn Sie 4K-Videos verarbeiten, müssen Sie möglicherweise den Lambda-Speicher aufrüsten.
  • Timeout-Limits: Bei sehr langen Videos kann es sein, dass Sie das Timeout von Lambda erreichen. Erwägen Sie in diesen Fällen die Verwendung von Schrittfunktionen.
  • Kaltstarts: Der Container ist ziemlich groß, daher können erste Aufrufe langsamer sein.

Was kommt als nächstes? ?

Das ist erst der Anfang! Sie können diese Lösung erweitern auf:

  • Generieren Sie mehrere Miniaturbildgrößen
  • Video-Metadaten extrahieren
  • Vorschau-GIFs erstellen
  • Video-Wasserzeichen hinzufügen

Zusammenfassung?

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.

Notiz

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!

Haftungsausschluss

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! ?


--- Meine Notizen – Diskussionspunkte für den Artikel

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn