2017 führte Brightcove die dynamische Bereitstellung ein und begann damit, unsere Manifeste und Videos "just in time" zu dem Zeitpunkt zu generieren, an dem sie von einem Player angefordert werden. So können wir Content in mehrere verschiedene Formate umpacken und die größtmögliche Bandbreite an Geräten unterstützen.
Seitdem haben wir zunehmend von Kunden gehört, dass sie diese Flexibilität selbst nutzen und genau steuern möchten, über welches CDN ihre Inhalte ausgeliefert werden, welche Qualität der Videowiedergaben verfügbar sein soll und sogar in welcher Reihenfolge die verschiedenen Qualitätswiedergaben im Videomanifest präsentiert werden sollen. Dies führte zur Entwicklung unserer Funktion "Delivery Rules", die nun als Teil unserer API allgemein verfügbar ist.
In diesem Beitrag sehen wir uns an, wie diese API verwendet werden kann, um einen der häufigsten Anwendungsfälle zu lösen, nämlich die Begrenzung der maximalen Qualität von Videos, die für bestimmte Geräte bereitgestellt werden.
EINRICHTEN
Um zu beginnen, benötigen wir zunächst ein Video zum Testen, das wir wie üblich über Video Cloud.
Ein Blick auf das HLS-Manifest, das an den Player übermittelt wird, zeigt, dass es eine Reihe der folgenden Zeilen enthält, die Wiedergabemanifeste für verschiedene Auflösungen darstellen - in diesem Fall 480×270, 640×360, 960×540 und 1280×720 (unten):
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=2205500,CODECS="mp4a.40.2,avc1.4d001f",RESOLUTION=1280x720,AUDIO="audio-2",CLOSED-CAPTIONS=NONE
https://manifest.prod.boltdns.net/manifest/v1/hls/v4/aes128/5270290572001/aa7059e5-586b-4caa-ae6f-5533f223a569/a557b391-f20e-4727-9185-459411a63029/10s/rendition.m3u8
Wenn 960×540 die maximale Auflösung ist, die wir an unser hypothetisches Gerät liefern wollen, dann sollte die 1280×720-Wiedergabe verschwinden, sobald unsere Regel angewandt wurde.
ERSTELLUNG UNSERER REGEL
Zustellungsregeln bestehen aus Bedingungen (wann eine Regel aufgerufen werden soll) und Aktionen (wie sich die Regel auf den Inhalt auswirken soll).
Da wir wissen, dass die Regel die maximale Qualität der Videowiedergabe begrenzen soll, erstellen wir zunächst die Aktion mit der folgenden HTTP-Anfrage:
POST /accounts/{accountID}/actions
Content-Type: application/json
Authorization: Bearer {access_token}
und der Anfragekörper auf:
{
"properties": {
"max_video_resolution": "960x540"
}
}
Dadurch wird die neue Aktion erstellt und es wird etwas zurückgegeben, das wie folgt aussieht:
{
"id": "88b13752-3469-4e46-b4aa-49cd4f1685a6",
"properties": {
"max_video_resolution": "960x540"
}
}
MANUELLES AUFRUFEN VON AKTIONEN
Bevor wir uns mit der bedingten Anwendung unserer Aktion befassen, können wir sie manuell aufrufen und überprüfen, ob sie das tut, was wir wollen, indem wir ihre ID als Parameter zu unserer Playback-API-Anforderung hinzufügen:
https://edge.api.brightcove.com/playback/v1/accounts/5270290572001/videos/6230434222001?config_id=88b13752-3469-4e46-b4aa-49cd4f1685a6
Damit erhalten wir das gleiche HLS-Manifest wie zuvor, aber ohne die 1280×720-Wiedergabe!
Das manuelle Aufrufen von Regeln auf diese Weise ist nicht nur für Tests nützlich, sondern auch eine leistungsstarke Technik für Kunden, die die Brightcove-SDKs für die Entwicklung ihrer eigenen Apps nutzen, da sie auf diese Weise unterschiedliche Regeln pro Gerät, pro App oder sogar pro Benutzer aufrufen können, indem sie einfach unterschiedliche Aktions-IDs übergeben.
Eine häufige Anwendung, die wir beobachten, ist, dass unsere Kunden eine Aktion anwenden, um anonymen Nutzern einen einfachen Inhalt zu liefern, während jeder, der sich anmeldet, eine manuelle Aktion anwendet, um ihm reichhaltigere Inhalte zu liefern (Video und Audio in höherer Qualität, moderne Codecs wie HEVC, Premium-CDN-Anbieter).
BEDINGTER AUFRUF VON AKTIONEN
Für Kunden, die die Granularität des manuellen Aufrufs von Aktionen nicht wünschen oder benötigen, stellen wir eine Reihe von vorgefertigten Bedingungen zur Verfügung, mit denen gesteuert werden kann, unter welchen Umständen die Brightcove-Manifesterstellungsdienste Regeln anwenden sollen. Diese gelten für alle Anforderungen und sind daher eine hervorragende Möglichkeit, bestimmte Benutzergruppen anzusprechen, unabhängig davon, auf welchem Gerät sie Ihre Videos ansehen.
Die vollständigen Bedingungen sind in der API-Referenz hier zu finden .
Nehmen wir an, wir wissen, dass Nutzer in Großbritannien aufgrund von landesweiten Netzkapazitätsproblemen mit der Pufferung hoher Auflösungen zu kämpfen haben, und wollen daher die Wiedergabe höherer Auflösungen ausblenden, bis diese Probleme behoben sind.
PUT /accounts/{accountID}/conditions
Content-Type: application/json
Authorization: Bearer {access_token}
Dieser API-Aufruf benötigt ein Array von Bedingungen, aber im Moment erstellen wir nur eine, indem wir den folgenden Body in unsere Anfrage aufnehmen:
[
{
"name": "Cut off high-quality renditions for the UK",
"if": {
"request_country": [
"GB"
]
},
"then": [
"88b13752-3469-4e46-b4aa-49cd4f1685a6"
]
}
]
Wenn wir nun unsere Standard-Wiedergabe-API-Anfrage aus dem Vereinigten Königreich heraus stellen (beachten Sie, dass diesmal kein config_id-Parameter angehängt ist), wird die hochwertige Wiedergabe herausgenommen!
WAS KOMMT ALS NÄCHSTES?
Wir hoffen, dass Sie einen Eindruck von der Leistungsfähigkeit und Flexibilität der Lieferregeln bekommen haben. Die vollständige Liste der unterstützten Bedingungen und Aktionen finden Sie hier. Wenn Sie noch weitere Bedingungen und Aktionen hinzufügen möchten, wenden Sie sich bitte an den Kundendienst oder Ihren Kundenbetreuer und lassen Sie es uns wissen!
Wenn Sie mehr darüber erfahren möchten, wie unsere Kunden die Bereitstellungsregeln nutzen, lesen Sie, wie Seven West Media die Bereitstellung von Videoinhalten mit den Bereitstellungsregeln von Brightcove optimiert.