Ich arbeite an einer Website, die Live-Videos für Benutzer streamen muss, und als solche musste ich mich mit dem traurigen Zustand der aktuellen browserbasierten Video-Streaming-Technologie auseinandersetzen. Die derzeit beliebtesten Lösungen für das Live-Streaming weisen Kompatibilitätsprobleme auf. RTMP erfordert Flash, HLS wird nur von Safari und Chrome für Android nativ unterstützt , DASH wird nirgendwo nativ unterstützt, und für die Verwendung von dash.js sind Media Source Extensions erforderlich , die noch nicht in großem Umfang unterstützt werden.
Dies führt zu einer für mich offensichtlichen Frage: Ist es möglich, einfachen progressiven Download als Alternative zu Protokollen wie HLS, RTMP und DASH zu verwenden, für die entweder Browserunterstützung oder Plugins erforderlich sind?
Die Idee, progressive Downloads zum Streamen von Live-Medien zu verwenden, ist nicht unerreicht. Leute machen es schon für Audio. Mit Tools wie liveCaster können Sie Live-MP3-Audio über eine einzige progressive HTTP-Antwort streamen, ohne eine zuvor aufgezeichnete MP3-Datei zu benötigen. Bibliotheken wie AmplitudeJS haben sich alle Mühe gegeben, Funktionen für diese Art von Live-Audio-Streaming hinzuzufügen .
Ich habe jedoch keine Beispiele für diese Technik gesehen, die in der Natur für Videos verwendet wurde, und ich kann nicht sagen, warum. Es sieht so aus, als würde es eine Schicht von unordentlichen und schwierigen Kompatibilitätsproblemen auf der Browserseite für relativ wenig Kompromiss beseitigen. (Und die Kompatibilität ist immer noch ein großes Problem beim Live-Streaming, selbst wenn die Profis es tun. Wenn ich versuche, ein Live-Video auf dem iPlayer von BBC in Firefox anzusehen, erhalte ich nur eine Fehlermeldung, in der ich aufgefordert werde, Flash zu installieren.) Diese Technik, und ich habe noch nie jemanden gesehen, der diese Idee außer mir erwähnte .
Warum? Gibt es eine grundlegende Einschränkung, die es unmöglich macht, eine Videodatei wie eine MP4-Datei beim Generieren über einen progressiven Download zu streamen und beim Herunterladen in einem <video>
Element abzuspielen ?