Sechs Überlegungen bei der Nutzung von Video Indexer im großen Stil

Veröffentlicht am 27 Januar, 2020

Program Manager, Azure Media Services, Video Indexer

Ihr umfangreiches Archiv an Videos, die indiziert werden müssen, wächst immer weiter. Daher haben Sie Microsoft Video Indexer evaluiert und beschlossen, Ihre Lösung noch intensiver zu nutzen und hochzuskalieren.

Im Allgemeinen ist eine Skalierung nicht schwierig, aber beim ersten Mal ist möglicherweise nicht sofort ersichtlich, wie sie sich am besten durchführen lässt. Kommen Ihnen solche Fragen in den Sinn? „Muss ich irgendwelche technologischen Einschränkungen berücksichtigen?“, „Wie lässt sich die Skalierung am intelligentesten und effizientesten durchführen?“ und „Wie vermeide ich unnötige Ausgaben?“. Hier finden Sie sechs Best Practices für die Nutzung von Video Indexer im großen Stil.

 

1. Beim Hochladen von Videos sollte eine URL bereitgestellt werden, anstatt die Datei als Bytearray zu senden.

Video Indexer bietet Ihnen die Option, Videos über eine URL hochzuladen oder die Datei direkt als Bytearray zu senden. Denken Sie jedoch daran, dass es bei der zweiten Möglichkeit einige Einschränkungen gibt.

Erstens ist die Dateigröße begrenzt. Die Größe einer Bytearraydatei ist auf 2 GB begrenzt – bei der Verwendung einer URL beträgt die Größenbegrenzung für den Upload 30 GB.

Zweitens – und für die Planung der Skalierung von größerer Relevanz – bedeutet das Senden von Dateien in mehreren Teilen ein hohes Maß an Abhängigkeit von Ihrem Netzwerk. Dienstzuverlässigkeit, Konnektivität, Uploadgeschwindigkeit und irgendwo im WWW verlorene Pakete sind nur einige der Probleme, die sich auf die Leistung und somit auf die Skalierungsfähigkeit auswirken können.

Abbildung: Upload eines Videos über eine URL im Vergleich mit potenziellen Netzwerkproblemen bei einem direkten Upload

Wenn Sie Videos über eine URL hochladen, müssen Sie nur den Pfad zum Speicherort einer Mediendatei angeben – wir kümmern uns um den Rest (unten sehen Sie das entsprechende Feld der Upload Video-API).

Sehen Sie sich dieses kurze Codebeispiel zum Hochladen von Videos mithilfe einer URL über eine API an. Sie können auch AzCopy verwenden, um Ihre Inhalte schnell und zuverlässig in ein Speicherkonto hochzuladen, von dem aus Sie die Inhalte über eine SAS-URL an Video Indexer übermitteln können.

URL-Adressfeld in der Upload Video-API

2. Erhöhen Sie bei Bedarf die reservierten Einheiten für Medien.

Wenn Sie gerade mit der Nutzung von Video Indexer beginnen und sich noch in der Proof of Concept-Phase befinden, benötigen Sie in der Regel nicht viel Rechenleistung. Später, wenn Sie die Video Indexer-Nutzung hochskalieren, verfügen Sie über ein größeres Archiv an Videos, die Sie indizieren möchten, daher muss der Prozess mit einer Geschwindigkeit ablaufen, die zu Ihrem Anwendungsfall passt. Daher sollten Sie erwägen, die Anzahl von Computeressourcen zu erhöhen, wenn die derzeitige Rechenleistung nicht ausreicht.

In Azure Media Services werden Rechenleistung und Parallelisierung in reservierten Einheiten für Medien (Reserved Units, RUs) gemessen. Dies sind die Compute-Einheiten, die die Parameter der Verarbeitungsaufgaben für Ihre Medien bestimmen. Die Anzahl von RUs wirkt sich auf die Anzahl von medienbezogenen Aufgaben aus, die in jedem Konto gleichzeitig verarbeitet werden können. Der RU-Typ bestimmt die Verarbeitungsgeschwindigkeit, und für ein Video sind möglicherweise mehrere RUs erforderlich, wenn die Indizierung komplex ist. Wenn alle RUs ausgelastet sind, werden neue Aufgaben in eine Warteschlange eingereiht, bis eine Ressource verfügbar wird.

Wir wissen, dass Sie einen effizienten Betrieb sicherstellen und keine Ressourcen vorhalten möchten, die sich zeitweise im Leerlauf befinden. Daher bieten wir ein System mit automatischer Skalierung, das RUs deaktiviert, wenn weniger Verarbeitungsleistung erforderlich ist, und RUs aktiviert, wenn Sie eine hohe Leistung benötigen (all Ihre RUs können vollständig genutzt werden). Sie können diese Funktion ganz einfach aktivieren, indem Sie in den Kontoeinstellungen die Autoskalierung aktivieren oder die Update-Paid-Account-Azure-Media-Services-API verwenden.

Schaltfläche für die Autoskalierung in den KontoeinstellungenAPI-Beispiel zur Aktualisierung von gebührenpflichtigen Konten in AMS mit „autoScale = true“Zum Minimieren von Indizierungsdauer und geringem Durchsatz empfehlen wir, mit 10 RUs des Typs S3 zu beginnen. Wenn Sie die Lösung später hochskalieren, um mehr Inhalte oder eine höhere Parallelität zu unterstützen, und zu diesem Zweck weitere Ressourcen benötigen, nutzen Sie das Supportsystem (nur für gebührenpflichtige Konten), um uns zu kontaktieren und die Zuweisung weiterer RUs anzufordern.

3. Beachten Sie die Drosselung.

Video Indexer ist dafür konzipiert, große Mengen an Indizierungsanforderungen zu verarbeiten. Um den Dienst optimal nutzen zu können, sollten Sie die Kapazitäten des Systems berücksichtigen und Ihre Integration entsprechend entwerfen. Es wäre wenig sinnvoll, eine Uploadanforderung für einen Batch aus Videos zu senden, nur um dann herauszufinden, dass einige Filme nicht hochgeladen wurden und HTTP 429-Antwortcodes (zu viele Anforderungen) zurückgegeben werden. Dies kann passieren, wenn Sie mehr Anforderungen senden, als die unterstützte maximale Anzahl von Filmen pro Minute zulässt. Machen Sie sich keine Sorgen: Die HTTP-Antwort enthält einen Retry-After-Header. Dieser Header gibt an, wann Sie den nächsten Versuch starten sollten. Beachten Sie diese Angabe unbedingt, bevor Sie die nächste Anforderung versuchen.

Dokumentation der HTTP 429-Antwort, die der Benutzer erhält

4. Verwenden Sie eine Rückruf-URL.

Haben Sie jemals bei einem Kundendienst angerufen und eine Ansage wie diese erhalten: „Wir verarbeiten Ihre Anforderung, dies wird einige Minuten dauern. Sie können Ihre Telefonnummer hinterlassen, wir melden uns bei Ihnen, wenn der Vorgang abgeschlossen ist.“? Hinter einer solchen Situation – Sie hinterlassen Ihre Rufnummer, und der Kundendienst ruft Sie in der Sekunde an, in der die Anforderung verarbeitet wurde – steckt exakt das gleiche Konzept wie bei der Verwendung einer Rückruf-URL.

Anstatt also den Status Ihrer Uploadanforderung ab dem Moment abzufragen, in dem sie gesendet wurde, sollten Sie einfach eine Rückruf-URL hinzufügen und auf eine Aktualisierung unsererseits warten. Sobald sich eine Statusänderung bei Ihrer Uploadanforderung ergibt, senden wir eine POST-Benachrichtigung an die von Ihnen angegebene URL.

Sie können eine Rückruf-URL als Parameter der Upload Video-API hinzufügen (die Beschreibung in der API finden Sie im Folgenden). Wenn Sie sich über die Vorgehensweise nicht im Klaren sind, sehen Sie sich die Codebeispiele in unserem GitHub-Repository an. Übrigens: Für eine Rückruf-URL können Sie auch Azure Functions verwenden – eine ereignisgesteuerte serverlose Plattform, die per HTTP ausgelöst werden kann und einen Nachverfolgungsflow implementiert.

Adressfeld der Rückruf-URL in der Upload Video-API

5. Verwenden Sie die für Sie passenden Indizierungsparameter.

Wenn Sie Video Indexer nutzen und besonders dann, wenn Sie Ihre Lösung hochskalieren möchten, müssen Sie zunächst herausfinden, wie Sie mit den richtigen Parametern für Ihre Anforderungen optimal von der Lösung profitieren. Bedenken Sie Ihren Anwendungsfall, und definieren Sie verschiedene Parameter, mit denen Sie Geld sparen und den Indizierungsprozess für Ihre Videos beschleunigen können.

Wir bieten Ihnen die Option, Ihre Nutzung von Video Indexer durch Auswahl von Indizierungsparametern anzupassen. So einfach kann es sein: Legen Sie die Voreinstellung nicht auf „Streaming“ fest, wenn Sie nicht vorhaben, ein Video anzusehen, und indizieren Sie keine Videodaten, wenn Sie nur Audiodaten benötigen.

Bevor Sie Ihr Video hochladen und indizieren, lesen Sie diese Dokumentation und hier insbesondere die Abschnitte zu den Parametern indexingPreset und streamingPreset, um eine bessere Vorstellung davon zu erhalten, welche Optionen Ihnen zur Verfügung stehen.

6. Indizieren Sie Ihre Videos mit optimaler Auflösung, nicht mit der höchsten.

Vor gar nicht allzu langer Zeit gab es überhaupt noch keine Videos mit hoher Auflösung. Heutzutage sind Videos mit unterschiedlichsten Qualitätsstufen im Umlauf, von HD bis 8K. Die Frage ist: Welche Videoqualität benötigen Sie für die Indizierung Ihrer Videos? Je höher die Qualität des Films ist, den Sie hochladen, desto größer ist die Datei – und entsprechend steigen die erforderliche Rechenleistung und die Dauer des Uploads.

Unserer Erfahrung nach gibt es in vielen Fällen nahezu keinen Unterschied bei der Indizierungsleistung zwischen HD-Videos (720p) und 4K-Videos. Letztendlich erzielen Sie fast die gleichen Erkenntnisse mit dem gleichen Zuverlässigkeitsgrad.

Bei einem Gesichtserkennungsfeature z. B. ist eine höhere Auflösung möglicherweise in Szenarien hilfreich, in denen ein Video viele kleine, aber für den Kontext wichtige Gesichter zeigt. Dies führt allerdings zu einem quadratischen Anstieg bei der Laufzeit und einem höheren Risiko falsch-positiver Ergebnisse.

Daher empfiehlt es sich, zu überprüfen, ob Sie die richtigen Ergebnisse für Ihren Anwendungsfall erzielen, und zunächst lokale Tests durchzuführen. Laden Sie dasselbe Video in 720 und 4K hoch, und vergleichen Sie die erzielten Erkenntnisse. Denken Sie daran: Es ist wenig sinnvoll, mit Kanonen auf Spatzen zu schießen.

Haben Sie Fragen oder Feedback? Wir freuen uns über Ihr Feedback. Wenden Sie sich über die UserVoice-Seite an uns, damit wir bestimmte Features priorisieren können, hinterlassen Sie einen Kommentar unter diesem Artikel, oder senden Sie eine E-Mail an VISupport@Microsoft.com, wenn Sie Fragen haben.

Erzählen Sie uns etwas über Ihren Anwendungsfall, und wir helfen Ihnen bei der Skalierung.