webentwicklung-frage-antwort-db.com.de

Streamen von Videos mit Amazon S3/CloudFront mit HTML5-Player möglich?

Ich möchte einen HTML5-Videoplayer verwenden und Videos streamen. Ist das mit S3/CloudFront möglich? Ich verstehe, dass Amazon das RTMP-Streaming-Protokoll verwendet, und das Tag video von HTML5 unterstützt kein RTMP. Gibt es eine Möglichkeit, Videos mit HTML5-Playern zu streamen?

30
at.

Vieles von dem, was @Wayne Koorts gepostet hat, bietet die Grundlage für eine gute Antwort. Es scheint, dass Sie das Video über progressiven Download "streamen" können. Dies funktioniert mit allen html5-kompatiblen Videodateien, wie er veranschaulicht hat. 

Um bei einem progressiven Download von mp4-Dateien die beste Leistung zu erzielen, müssen die Metadaten des moov-Atoms am Anfang der Datei angezeigt werden. Wenn Sie sicherstellen, dass Ihre mp4-Dateien über diese Eigenschaft verfügen, ist dies einer der Gründe, warum das Programm qtfaststart in ffmpeg enthalten ist.

Der progressive Download ist natürlich kein "Streaming Media Server". Streaming Media-Server unterstützen eine Reihe verschiedener Funktionen, darunter:

  • Sicherheit und DRM
  • Adaptives Streaming/Interleaving (Unterstützung für mehrere Bitraten, die in einer bestimmten Datei verschachtelt sind)
  • Ich suche

Es scheint, dass die hier zum Ausdruck gebrachte besondere Sorge das Suchmerkmal ist. Wie es passiert, wird dies in html5 und von s3/cloudfront gut unterstützt.

Was verwirrend ist, ist, dass Cloudfront von Videodateien mehrere Optionen hat. Eine Option besteht darin, die Dateien von ihrem Netzwerk lizenzierter Adobe FMS-Server ausliefern zu lassen. Hier kommt die Verwirrung über die Verwendung von RTMP ins Spiel. Dies ist jedoch nur eine Option. Dateien können im standardmäßigen "Download" -Formular an cloudfront verteilt werden, und sie haben aufgrund der Implementierung von Byte-Bereichen und der Unterstützung für das, was allgemein als Pseudo-Streaming bezeichnet wird, das Suchobjekt. 

Es scheint eine Menge Verwirrung über den Begriff "Pseudo-Streaming" zu geben, aber im Fall von html5 ist es einfach die Voraussetzung, dass der HTTP-Server die 1.1-Spezifikation unterstützt. Bei der Suche sendet der Client eine Bytebereichsanfrage und der Server ist für die Bereitstellung dieses Teils der Datei verantwortlich.

Mit anderen Worten: Das Suchen mit dem html5-Player funktioniert mit den Cloudfront-Servern, da diese mit HTTP 1.1 kompatibel sind.

Bei einigen anderen Funktionen, die Streaming-Server bieten, gibt es eine Reihe von Konkurrenzservern, die "H264-Streaming" oder Elemente von MPEG-DASH als Alternative zur Verwendung von RTMP- und FMS-kompatiblen Servern implementiert haben. Eine Reihe von Flash-basierten Playern unterstützen diese Funktionen, die über das einfache Suchen hinausgehen. Der JWPlayer und der Flowplayer sind zwei Beispiele für Player, die einige oder alle Funktionen unterstützen. Der Video-Player von HTML5 unterstützt jedoch keine dieser Funktionen. Weitere Informationen finden Sie unter http://h264.code-shop.com/trac#H264StreamingModuleIntroductionversion2

Wenn dies nicht genug Verwirrung für Sie ist, hat Apple ein eigenes "HTTP Live Streaming" -Protokoll implementiert, das manchmal als m3u8 bezeichnet wird und das sie in ios und quicktime unterstützen. Ich erwähne das, weil die Leute häufig eine Möglichkeit haben, verschiedene Geräte zu unterstützen.

Ich hoffe, dass dies zur Klärung der Dinge beigetragen hat.

56
gview

Was ich kürzlich erfolgreich gemacht habe, ist die Verwendung des Video.js-HTML5-Players (Open Source) -Videoplayers, wobei die Videos auf S3 gehostet werden. Grundsätzlich laden Sie einfach Ihr Video in Ihren S3-Bucket hoch. Der Code auf der Seite sieht dann ungefähr so ​​aus (nachdem Sie die Video.js-CSS- und JS-Dateien in Ihre Seite eingefügt haben):

<video id="example_video_1" class="video-js vjs-default-skin"
    controls preload="auto" width="1600" height="900"
    poster="http://mys3bucket.s3.amazonaws.com/videoImage.jpg"
    data-setup='{"example_option":true}'>
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.mp4" type='video/mp4' />
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.webm" type='video/webm' />
</video>

poster ist nur das Standbild, das auf dem Videoplayer angezeigt werden soll, während das Video geladen wird oder nicht abgespielt wird. Für die <source>-Tags können Sie beliebig viele oder so wenige verknüpfen, für die Sie Videos haben. Mehr Formate bedeuten lediglich eine bessere Unterstützung auf verschiedenen Plattformen (z. B. spielen einige Vanilla Linux-Distributionen möglicherweise kein MP4 usw.).

Siehe Video.js Kurzanleitung hier .

Wenn Sie sich für die Verwendung von S3 oder CloudFront entscheiden: IMHO S3 ist generell eher für Videos geeignet, da die Kosten niedriger sind, wenn Sie viele Daten speichern (da CloudFront Kopien von allem auf alle Edge-Server verteilt, obwohl Sie die Anzahl begrenzen können etwas über Optionen). Einige Leute bevorzugen CloudFront aufgrund der Geschwindigkeit, obwohl CloudFront in erster Linie als Content Delivery-Netzwerk gedacht ist, in dem extrem schnelle Antwortzeiten erforderlich sind (z. B. für Website-Grafiken, Stylesheets, JS-Dateien usw.). Dies ist abhängig vom jeweiligen Kompromiss auf Ihre Bedürfnisse. Wenn Ihre Videos alle sehr klein sind, ist CloudFront tatsächlich für Ihre Anforderungen geeignet.

Für eine genauere Analyse der Kosten können Sie Amazons Monatskostenrechner verwenden.

12
Wayne Koorts

Ich arbeite an Videomaterial für eine globale Produktion. Ich muss die Kosten niedrig halten, aber ich möchte einfach skalierbar sein und über genügend Funktionen verfügen, um ein ziemlich komplexes System sicher zu liefern. AWS scheint großartig zu sein und verwendet sie seit ein paar Jahren, und ich denke, die S3-Schaufeln sind erstaunlich. Sie sind bis zu einem gewissen Grad frei. Und ja. Es gelingt ihnen sicherlich, das bereitzustellen, was meines Erachtens Streaming von Videos ist. dadurch, dass es in S3 untergebracht ist und direkt beim Laden der Seite direkt in meinen JWPlayer ohne Jitter oder Latenz abgespielt wird. 

Ich kann sehen, dass einige der Streaming-Video-Abgrenzungen unbestimmt und für mich immer noch verwirrend sind, obwohl @gview eine großartige Arbeit geleistet hat, die uns mit tieferen Anreizen versorgt hat. Die Komplexität interessiert mich, aber wenn Ihre Agenda darin besteht, dieses Video in Gang zu bringen, glaube ich nicht, dass HTML5 Ihre Antwort ist. SOAP, REST, HTTP und sogar HTTPS werden unterstützt und sind soweit ich weiß bereitstellen kann. Bemerkenswert ist auch die Dokumentation bei AWS, die sehr hilfreich ist. Ich werde hier einen Startlink anhängen. 

@ user2352370: JWplayer..ich bin unentschieden. Ich habe gerade die mittlere Mitgliedschaft erworben und jetzt, nachdem ich Wayne Koorts oben gelesen habe, denke ich, dass JSvideo aus verschiedenen Gründen besser ist, und ich werde damit arbeiten, wenn ich eine Rückerstattung erhalten kann. Ich sehe in JWvideo keinen unmittelbaren Wert, jenseits des Stils, den es für die Videos bietet. Ich glaube, dass der Wert des JWvideo für mich zumindest auf das Styling des Videos beschränkt ist. Ich kann JSVideo verwenden, um verschiedene Fallbacks für mehrere Geräte- und Browsertypen zu erstellen. Ich kann das JSVideo sogar stylen, aber vielleicht ist etwas für die Einfachheit von JWVideo zu sagen. Ich werde es wahrscheinlich für den Ansturm des Videopostings brauchen, den ich in den kommenden Monaten haben werde. 

Sowohl JWVideo als auch JSVideo funktionieren
Ich glaube, JWVideo und JSvideo werden beide die Arbeit erledigen. Ich habe derzeit beide auf meiner Website für verschiedene Videos und beide machen einen anständigen Job. Ich habe Browser noch nicht sehr gründlich getestet.

Do Erstellen Sie ein kostenloses AWS-Konto und spielen Sie kostenlos mit den Diensten. Es ist eine schöne Augenöffnung, wenn Sie seit einiger Zeit mit Anbietern wie RackSpace oder Host Gator zu tun haben.
AWS Free Tier HomePage

AWS-Dokumentationssite für S3

1
Ryan H.

Ich habe AS3 für das Hosting von Videos mit VideoJS für meine eigene Website gesucht. Deshalb habe ich Ihre Frage gefunden. Als ich jedoch den Beispielcode für VideoJS sah, fiel mir auf, dass der Link bei einer Firma namens ZenCoder war - http: // video- js.zencoder.com/oceans-clip.mp4

http://zencoder.com/de/

Ich habe keine Verbindung zu Zencoder, ist aber vermutlich eine Überlegung wert, wenn Sie nach Cloud-basiertem Video-Hosting suchen.

0
Kevin Monk