[PYTHON] Unterstützt iOS-kompatibles Streaming privat (mit Einschränkungen)

Dieser Artikel ist eine Fortsetzung von Video Stream unter AWS S3 + CloudFront.

Zweck

Methode

In der Ankündigung zu den JAWS Days 2014 wird beschrieben, wie dies funktioniert.

Es wird auf Seite 17 von Sichere Bereitstellung von Inhalten und Effektverfolgung durch CloudFront beschrieben.

Signierte URL generieren

Die signierte URL generiert eine einmalige URL für jede URL und bricht das Surfen für einen bestimmten Zeitraum ab. Sie können die URL jedoch mit einem Platzhalter angeben und damit eine gültige Signatur für das Verzeichnis mit der .ts-Datei signieren. Es scheint, dass Sie es bekommen können.

http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html

Im Fall von boto (Python-Modul) kann es erstellt werden, indem der Methode create_signed_url policy_url (str) zugewiesen wird. http://boto.readthedocs.org/en/latest/ref/cloudfront.html

Umschreiben der Manifestdatei

Gemäß dem zuvor eingeführten JAWS Days-Dokument wird der URI der .ts-Datei in der Manifestdatei mit der Erweiterung .m3u8 durch Hinzufügen einer Domäne als signierte URL neu geschrieben.

Dies ist möglich, wenn Sie dies zum Zeitpunkt des Ansehens des Videos dynamisch tun.

Die Manifestdatei hatte das folgende einfache Format, daher scheint es gut, die Zeile neu zu schreiben, die nicht mit "#" beginnt. (Erreichbar mit einem einfachen Parser)

Beispiel für eine Manifestdatei.m3u8


#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:11
#EXTINF:10.866922,
hls_400_00000.ts
#EXTINF:10.817778,
hls_400_00001.ts
#EXTINF:10.815044,
hls_400_00002.ts
.
.
.
#EXT-X-ENDLIST

Dynamisches Umschreiben der Manifestdatei

Ich mache mir Sorgen darüber, wo und wann ich das tun soll ...

Als in Betracht gezogene Methode erhält der Anwendungsserver (diesmal unter der Annahme von Plone) das ursprüngliche Manifest von S3 (oder CloudFront), schreibt es in eine signierte URL um und verteilt es.

Es scheint notwendig zu sein, zu berücksichtigen, wie viel dieses Umschreiben bei jedem Zugriff auf die URL hinzugefügt wird. Insbesondere beim PC-Zugriff ist diese Konvertierung nicht erforderlich, da sie von RTMP anstelle von HLS angezeigt wird.

Wenn Sie dies tun, wenn auf die Manifestdatei des Anwendungsservers zugegriffen wird, liegt möglicherweise kein Problem vor, da Sie sie bei RTMP nicht unachtsam konvertieren müssen. (Video.js wählt zwei Quellen aus, daher denke ich, dass dies in Ordnung ist.)

Zusammenfassung

Durch die Integration verschiedener Technologien befinden wir uns meiner Meinung nach in einer Situation, in der es möglich erscheint, die gewünschten Funktionen zu implementieren. Tatsächlich werde ich versuchen, mit dieser Streaming-Methode zu experimentieren.

TODO

--Versuchen Sie die benutzerdefinierte Richtlinie für signierte URLs (geben Sie zulässige Inhalte mit Platzhaltern an).

Recommended Posts

Unterstützt iOS-kompatibles Streaming privat (mit Einschränkungen)
IP-Einschränkung mit Flask