Transloadify vorgestellt: Transloadit über die Kommandozeile
Am 14. Februar 2017 kündigten wir die Beta von Transloadify an, einem Kommandozeilenwerkzeug für den Zugriff auf die Encoding-Plattform von Transloadit. Damit ließ sich die Medienverarbeitung automatisieren, ohne zuvor eine SDK-Integration zu schreiben. Diese Anleitung von Adrian erschien ursprünglich auf transloadify.io.
Transloadify ist inzwischen veraltet. Seine CLI wurde in das
Node.js SDK aufgenommen, das heute als @transloadit/node veröffentlicht wird. Die
folgenden Beispiele verwenden Version 4.12.0 dieses Pakets. Die ursprüngliche Motivation und der
Workflow für Video-Wasserzeichen gelten weiterhin; die alten Befehle zur Beta-Registrierung und die
Anweisungen zur Paketinstallation jedoch nicht.
Einführung
Stellen Sie sich einen Raspberry Pi vor, der Videos für ein Internet-of-Things-Projekt aufnimmt. Sie möchten jedes Video vor der Veröffentlichung auf YouTube mit einem Wasserzeichen versehen und die CPU des Geräts für andere Aufgaben freihalten. Wenn Sie die fertige Aufnahme zu Transloadit hochladen, können Sie dieses Encoding aus der Ferne durchführen lassen.
Derselbe Ansatz kann bei einer großen Medienbibliothek auf einem leistungsfähigeren Rechner helfen. Mit den Voreinstellungen und Robots zur Verarbeitung von Transloadit beschreiben Sie die gewünschte Ausgabe, während ein CLI-Skript die lokalen Dateien verwaltet. Die Dauer von Upload und Verarbeitung hängt weiterhin von Ihren Dateien, Ihrer Verbindung und Ihren Instructions ab.
Wir verarbeiten zunächst ein Video, überwachen dann ein Verzeichnis und exportieren das Ergebnis abschließend direkt zu YouTube. Befehle, die Assemblies erstellen, verwenden Ihr Konto und können Verarbeitungskosten verursachen.
Installation
Installieren Sie für diese Anleitung Node.js 24 oder neuer. Führen Sie die CLI in der festgelegten Version ohne globale Installation aus:
npx -y @transloadit/node@4.12.0 --help
npx -y @transloadit/node@4.12.0 assemblies create --help
Weitere Bezugsquellen
Die ursprüngliche Ankündigung erwähnte ein Arch-Linux-AUR-Paket und ein geplantes Docker-Image. Das waren damalige Hinweise zur Distribution, keine Voraussetzungen für diese aktualisierte Anleitung. Verwenden Sie das offizielle Node.js SDK für die hier gezeigte CLI-Schnittstelle.
Registrierung und Authentifizierung
Erstellen Sie über die Transloadit-Website ein Konto und beziehen
Sie dort einen Auth Key und ein Auth Secret. Lassen Sie Ihren Secret-Manager dem CLI-Prozess
TRANSLOADIT_KEY und TRANSLOADIT_SECRET bereitstellen. Speichern Sie deren
Werte weder im Shell-Verlauf noch in der Versionsverwaltung oder einer Client-App.
Die CLI liest außerdem eine Datei namens .env im aktuellen Verzeichnis
sowie ~/.transloadit/credentials im dotenv-Format; Umgebungsvariablen der Shell haben Vorrang.
Halten Sie Dateien mit Zugangsdaten privat. Die ursprünglichen Bezeichnungen
transloadify register, transloadify authenticate, die Datei
.transloadify und die Variablennamen TRANSLOADIT_AUTH_* gehören nicht
zur Einrichtung, die diese Befehle verwenden.
Führen Sie die CLI nur auf einem Rechner aus, dem Sie Ihr Auth Secret anvertrauen. Templates halten Speicherzugangsdaten bei Transloadit, machen die Weitergabe eines Auth Secret an nicht vertrauenswürdige Geräte aber nicht sicher. Browser- und Mobilintegrationen sollten kurzlebige, signierte Instructions von einem authentifizierten Server beziehen.
Assembly Instructions festlegen
Speichern Sie dieses Objekt mit Steps als steps.json. Ersetzen Sie die
Wasserzeichen-URL vor der Verarbeitung eines Videos durch ein öffentlich erreichbares HTTPS-Bild,
über das Sie die Kontrolle haben:
{
"video_encode": {
"robot": "/video/encode",
"use": ":original",
"preset": "webm",
"watermark_url": "https://example.org/watermark.png",
"result": true
}
}
--steps akzeptiert dieses Objekt. Die explizit angegebene WebM-Voreinstellung
passt zum unten verwendeten Ausgabedateinamen. Hinweise zur Platzierung des Wasserzeichens und zu
weiteren Ausgabeeinstellungen finden Sie in der
Dokumentation zu /video/encode. Wie Sie Steps zusammenstellen,
erfahren Sie unter Assembly Instructions.
Ein Video verarbeiten
Erstellen Sie das Ausgabeverzeichnis und verarbeiten Sie eine fertige Aufnahme:
mkdir -p watermarked
npx -y @transloadit/node@4.12.0 assemblies create \
--steps steps.json -i originals/recording.webm -o watermarked/recording.webm
Der Befehl lädt die Eingabe hoch, wartet auf die Assembly und lädt das ausgewählte Ergebnis herunter. Prüfen Sie seinen Exit-Status und etwaige Diagnoseausgaben; eine ausbleibende Ausgabe bestätigt keinen Erfolg. Dieses Template erzeugt ein Ergebnis pro Eingabe, daher ist ein einzelner Ausgabedateiname angemessen. Verwenden Sie für mehrere Ergebnisdateien ein Ausgabeverzeichnis und beachten Sie die Ausgabeoptionen der CLI.
Automatisierung
Am vorhersehbarsten ist eine Integration, die den Befehl aufruft, nachdem Ihr Aufnahmeprogramm seine Ausgabedatei geschlossen hat. Alternativ können Sie ein bestehendes Verzeichnis überwachen:
mkdir -p originals watermarked
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --steps steps.json -i originals/ -o watermarked/
Die Überwachung umfasst vorhandene Eingaben und spätere Änderungen. Zeichnen Sie außerhalb des überwachten Verzeichnisses auf und verschieben Sie die abgeschlossene Aufnahme anschließend innerhalb desselben Dateisystems dorthin. Ein Dateisystemereignis allein belegt nicht, dass eine Aufnahme abgeschlossen ist. Halten Sie Ausgaben außerhalb des Eingabeverzeichnisses, um Ihre eigenen Ergebnisse nicht erneut zu verarbeiten, und beenden Sie die Überwachung nach Abschluss mit Ctrl+C.
Das passt auch zu einem Workflow mit einem freigegebenen Ordner, etwa über Dropbox: Eine Person stellt fertige Aufnahmen bereit, während ein vertrauenswürdiger Rechner sie verarbeitet und die Ergebnisse in einem separaten Ausgabeordner ablegt. Berücksichtigen Sie vor dem Aktivieren der Überwachung, wie der Synchronisierungsclient mit unvollständigen Dateien umgeht. Ein Überwachungsprozess ist keine dauerhafte Warteschlange für Jobs; Neustarts oder Dateiänderungen können eine weitere Assembly auslösen. Erfassen Sie für zuverlässige Wiederholungsversuche und eine nachvollziehbare Protokollierung Jobs und Assembly IDs in Ihrer Anwendung. Die SDKs für Ruby und Go sind Alternativen, wenn Sie eine engere Integration benötigen.
Templates
Eine lokale Datei mit Steps ist für einen einzelnen Rechner praktisch. Mit einem Template können mehrere vertrauenswürdige Worker zentral verwaltete Instructions gemeinsam nutzen. Erstellen Sie ein Template in der Weboberfläche oder mit:
npx -y @transloadit/node@4.12.0 templates create watermarker steps.json
Der Befehl gibt die neue Template ID aus. Setzen Sie TEMPLATE_ID in Ihrer Shell
auf diese ID; der Name des Templates ist eine menschenlesbare Bezeichnung, kein Identifikator.
Ersetzen Sie dann --steps durch --template:
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --template "$TEMPLATE_ID" -i originals/ -o watermarked/
Templates können auf Template-Zugangsdaten verweisen, sodass vertrauliche Speicherzugangsdaten in Ihrem Transloadit-Konto bleiben. Halten Sie auch die eigenen Kontozugangsdaten der CLI privat.
Transloadit optimal nutzen
Wenn YouTube das endgültige Ziel ist, kann Transloadit das Video mit Wasserzeichen direkt dorthin exportieren. So entfällt das Herunterladen auf den Raspberry Pi und das erneute Hochladen. Der ursprüngliche Upload bleibt erforderlich, und eine bestimmte Übertragungsgeschwindigkeit wird nicht garantiert.
Autorisieren Sie YouTube über die
Oberfläche für Template-Zugangsdaten und verweisen Sie dann in
Ihrem Template auf den Namen dieses Zugangsdaten-Eintrags. Unter
/youtube/store finden Sie Kontoanforderungen und Exportoptionen.
Ersetzen Sie steps.json durch:
{
"video_encode": {
"robot": "/video/encode",
"use": ":original",
"preset": "webm",
"watermark_url": "https://example.org/watermark.png"
},
"youtube": {
"robot": "/youtube/store",
"use": "video_encode",
"credentials": "my_youtube_credentials",
"title": "Watermarked Raspberry Pi recording",
"description": "A recording processed with Transloadit.",
"category": "science & technology",
"keywords": "raspberry pi, transloadit",
"visibility": "private"
}
}
Das Beispiel exportiert mit privater Sichtbarkeit, damit Sie das Ergebnis vor der Veröffentlichung prüfen können. Passen Sie Titel, Beschreibung, Kategorie, Schlagwörter und Sichtbarkeit an Ihren Workflow an. Aktualisieren Sie das Template anhand seiner ID und behalten Sie seinen Namen explizit bei:
npx -y @transloadit/node@4.12.0 templates modify "$TEMPLATE_ID" steps.json --name watermarker
Lassen Sie anschließend -o weg, damit die Ergebnisse nicht lokal
heruntergeladen werden:
npx -y @transloadit/node@4.12.0 assemblies create \
--watch --template "$TEMPLATE_ID" -i originals/
Damit haben Sie den Workflow, den die ursprüngliche Transloadify-Ankündigung zeigen sollte: lokal aufnehmen, aus der Ferne mit Wasserzeichen versehen und direkt veröffentlichen, alles über die Kommandozeile koordiniert. Prüfen Sie den resultierenden Assembly Status und die Ausgabe auf YouTube, bevor Sie eine Automatisierung unbeaufsichtigt laufen lassen.
Die ursprüngliche Anleitung erschien zuerst auf transloadify.io. Die obigen Befehle wurden für die CLI des Node.js SDK aktualisiert.
