VERWENDUNG VON ÜBERWACHUNGSORDNERN FÜR DIE AUTOMATISCHE TRANSKODIERUNG

Picture of bsp-admin-1
bsp-admin-1
blog-platzhalter bild

Überwachungsordner (auch "Ablageordner" oder "Hot Folder" genannt) sind ein schnelles und einfaches Werkzeug für die Batch-Automatisierung jedes dateibasierten Workflows. Wenn Sie Ihre Medien regelmäßig in dieselben Formate transkodieren, können Sie Rohdateien einfach in einem Ordner ablegen und beobachten, wie die transkodierten Dateien am anderen Ende herauskommen. Dies ist ein üblicher Schritt in Video-Postproduktions-Workflows, um Medien für die Genehmigung durch den Kunden vorzubereiten oder mehrere Ausgabeformate für die Verteilung zu generieren.

Dieser Beitrag ist eine Übung zur Verwendung von Lambda zum Zusammenfügen von Ressourcen. Durch das Ablegen einer Datei in einem S3-Bucket wird ein Transcodierungsauftrag mit der Zencoder-API ausgelöst, der die resultierenden Dateien zurück an S3 sendet. Diese Methode könnte weiter angepasst werden, um andere Schritte in Ihrem Arbeitsablauf zu automatisieren, z. B. die Durchführung zusätzlicher Aktionen mit den transkodierten Dateien (z. B. die Erzeugung von Push-Benachrichtigungen oder das Verschieben der Dateien in ein CDN).

Wenn Sie ein Entwickler sind und sich bereits mit AWS auskennen, können Sie direkt zur Lambda-Funktion in Schritt 3 übergehen oder den Beispielcode von GitHub herunterladen und selbst loslegen.

Warum Transcode in der Cloud?

Watch Folder werden von gängigen Encodern wie Adobe Media Encoder, Telestream und Sorenson Squeeze unterstützt. Für eine Codierung in kleinem Umfang ist die Lizenzierung von Sorenson- oder Adobe-Produkten möglicherweise nicht kosteneffizient, und für ein großes Volumen an Inhalten könnte die Konfiguration und Wartung einer Flotte von Codierungsservern teuer und zeitaufwändig sein.

Die von uns verwendeten Tools (Zencoder, S3 und Lambda) sind kostengünstig und werden pro Nutzung ohne Vorabkosten oder Mindestanforderungen abgerechnet, sodass unser Überwachungsordner sowohl für kleine als auch für große Lasten kosteneffizient ist. Mit 0,03 $/GB für S3-Speicher und 0,05 $/Min. für die transkodierte Ausgabe von Zencoder (bei hohem Volumen sogar nur 0,02 $/Min.) können Sie Ihre Nutzung leicht abschätzen. Da die Ausgabedateien in S3 geschrieben werden, sind sie sofort für die Webverteilung verfügbar.

Wie funktioniert es?

Unser Überwachungsordner wird sich in einem Amazon S3-Bucket befinden. Das Hochladen einer Datei in den Bucket löst unsere Lambda-Funktion aus, die eine Anfrage an die Zencoder-API zur Erstellung eines Codierungsauftrags zusammenstellt und sendet. Zencoder ruft die Datei aus S3 ab, transkodiert sie in die von uns definierten Ausgabeformate und legt die transkodierten Dateien dann wieder in S3 ab. Von dort aus können sie an Ihre Kunden verteilt oder sogar direkt über CloudFront oder ein anderes CDN an die Endbenutzer geliefert werden.

Voraussetzungen

Für dieses Lernprogramm benötigen Sie ein Amazon Web Services (AWS)-Konto und ein Zencoder-Konto. Die kostenlosen Versionen beider Dienste reichen für Demonstrationszwecke aus, obwohl Sie nur 5 GB S3-Speicher haben und Zencoder die Ausgaben auf 5 Sekunden kürzt.

Schritt 1: Einrichten eines S3-Buckets

Zunächst müssen wir den Überwachungsordner auf S3 einrichten. Wenn Sie noch keinen S3-Bucket eingerichtet haben, melden Sie sich bei der AWS-Konsole an und navigieren Sie zum S3-Service. Klicken Sie auf "Bucket erstellen" und geben Sie ihm einen Namen. Bucket-Namen sind für den gesamten Service eindeutig, daher ist es hilfreich, ein eindeutiges Präfix zu verwenden, z. B. Ihren Namen oder den Namen Ihres Unternehmens.

Belassen Sie die Region auf US Standard, was der Standardregion von Zencoder entspricht. Dies verhindert, dass S3-Übertragungsgebühren anfallen, wenn Zencoder Ihre Dateien abruft. Wenn Sie einen Bucket in einer anderen Region verwenden müssen, können Sie den Parameter "region" zum Zencoder-Auftrag hinzufügen, um sicherzustellen, dass die Transkodierung in der gleichen Region ausgeführt wird.

Erstellen Sie zwei Ordner in Ihrem S3-Bucket - einen für die Dateien, die Sie hochladen, und einen, in den Zencoder die transkodierten Dateien hochlädt. Ich habe einfach verwendet inputs/ und outputs/.

Schritt 2: Geben Sie Zencoder Zugriff auf den S3-Bucket

Es gibt zwei Möglichkeiten, Zencoder Zugriff auf Ihr S3-Bucket zum Lesen und Schreiben von Dateien zu gewähren. Der einfachste Weg ist, eine Richtlinie zu Ihrem S3-Bucket hinzuzufügen, die dem IAM-Benutzer von Zencoder Zugriff auf das Bucket gewährt.

Klicken Sie im Bereich Eigenschaften für den S3-Bucket auf Berechtigungen und dann auf Bucket-Richtlinie hinzufügen. Fügen Sie die Bucket-Richtlinie von Zencoder ein (verfügbar in dieser Github Repo) und ersetzt beide Instanzen von YOUR-BUCKETmit dem in Schritt 1 angegebenen tatsächlichen Bucket-Namen.

Die andere Möglichkeit, Zencoder Zugriff auf Ihren Bucket zu gewähren, besteht darin, eine IAM-Benutzer mit einer AmazonS3FullAccess Richtlinie (oder beschränken Sie sie auf diesen Bereich), und fügen Sie dann die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel dieses Benutzers zur Abschnitt Berechtigungsnachweise deines Zencoder-Kontos.

Schritt 3: Erstellen der Lambda-Funktion

Klicken Sie in der AWS-Konsole auf den Lambda-Service. Klicken Sie auf Create a Lambda Function (oder Get Started, wenn Sie Lambda zum ersten Mal verwenden). Überspringen Sie den Blueprint-Schritt, und Sie sehen den Bildschirm Configure Function. Geben Sie Ihrer Funktion einen Namen (z. B. "transcode Video") und wählen Sie Python 2.7 als Laufzeitumgebung.

Einfügen der Beispielcode in den Codeabschnitt der Lambda-Funktion. Sie müssen einige der globalen Variablen am Anfang bearbeiten - setzen Sie die API\_KEY zu Ihrem Zencoder-API-Schlüssel für vollen Zugriffändern Sie die INPUT\_FOLDER\_NAME auf den Namen des Überwachungsordners, den Sie in S3 erstellt haben, ändern Sie die S3\_OUTPUT\_BASE\_URL auf den Bucket und den Ordnernamen, in dem die Ausgabedateien gespeichert werden sollen, und setzen Sie die NOTIFICATION\_EMAIL an eine E-Mail-Adresse, an der du Benachrichtigungen von Zencoder erhalten möchtest (wenn du keine Benachrichtigungen möchtest, lass einfach Zeile 39 der Lambda-Funktion weg).

Über den Code in lambda\_function.py-im Wesentlichen den Namen der Datei, die in S3 hochgeladen wurde, und verwenden ihn als Grundlage für den Ausgabedateinamen. Die api\_data Objekt ist der Auftrag, der an Zencoder gesendet wird, wobei alle Ausgaben und Kodierungsparameter definiert sind. Sie können dies an Ihre Bedürfnisse anpassen, und Zencoder bietet mehrere Vorlagen in seinem Anfrage Builder. Dann übermitteln wir den Auftrag an den Zencoder-API-Endpunkt und protokollieren die Antwort.

Wählen Sie dann unter der Überschrift Neue Rolle erstellen die Option S3-Ausführungsrolle. Möglicherweise müssen Sie Popups in Ihrem Browser aktivieren, um den Erstellungsbildschirm zu sehen, in dem Sie aufgefordert werden, die neue Rolle zu benennen und auf Zulassen zu klicken. Diese Rolle definiert das Berechtigungsschema, unter dem die Lambda-Funktion ausgeführt wird - in diesem Fall gewähren wir Lambda Zugriff auf den S3-Bucket. Zurück auf dem Lambda-Bildschirm sollte die neue Rolle, die Sie erstellt haben, nun im Feld Role ausgewählt sein.

Erhöhen Sie die Zeitüberschreitung auf 10 Sekunden. In der Praxis wird die Funktion selten mehr als 1500 ms für die Ausführung benötigen, aber unsere Funktion ist widerstandsfähiger, wenn sie im Falle einer langsamen API-Antwort ein paar Sekunden länger warten kann. Lambda berechnet alle 100 ms der Funktionslaufzeit, daher werden wir den Wert nicht zu hoch ansetzen. Klicken Sie auf Weiter und dann auf Funktion erstellen. Fügen Sie auf der Registerkarte Event Sources (Ereignisquellen) eine Ereignisquelle hinzu. Wählen Sie S3 als Typ aus, wählen Sie den S3-Bucket aus Schritt 1 und legen Sie den Ereignistyp auf Object Created (All) fest.

Geben Sie in das Feld Präfix den Namen des Überwachungsordners ein, den Sie im S3-Bucket erstellt haben (z. B. inputs/). Dadurch wird sichergestellt, dass die Lambda-Funktion nur ausgelöst wird, wenn Dateien zu diesem Ordner hinzugefügt werden, und nicht an anderer Stelle im Bucket - und vor allem wird dadurch verhindert, dass unsere Ausgabedateien weitere Codierungsaufträge in einer Endlosschleife auslösen. Aktivieren Sie Enable event source und senden Sie es ab.

Das war's

Wir haben einen S3-Bucket mit einem Überwachungsordner und eine Lambda-Funktion, die Dateierstellungsereignisse von diesem Überwachungsordner empfängt und einen Zencoder-Auftrag erstellt, um diese Dateien zu transkodieren und sie in unseren Ausgabeordner zu übertragen. Laden Sie einige Medien in Ihren Überwachungsordner hoch, um es in Aktion zu sehen.

Bei der Fehlersuche können Sie in den AWS CloudWatch-Protokollen Details zu jedem Aufruf Ihrer Lambda-Funktion nachsehen. Die Ansicht "Aufträge" von Zencoder enthält ebenfalls Details zu jedem Auftrag und zu allen Fehlern, die möglicherweise aufgetreten sind.

Back in July 2025, Brightcove unveiled an ambitious roadmap with a dual focus on innovation and quality of experience...
Our teams have been hard at work making the Brightcove platform more powerful, more reliable, and more insightful for...
Vertical Videos Experience lets you deliver a TikTok/Reels-style vertical feed on the web, powered by Brightcove. It’...

SIND SIE BEREIT, LOSZULEGEN?

Setzen Sie sich mit uns in Verbindung, um zu erfahren, wie wir Ihre Videomarketing-Bemühungen verbessern und Ihnen dabei helfen können, die gewünschten Ergebnisse und den gewünschten ROI zu erzielen.