Pracuję nad witryną, która musi przesyłać strumieniowo wideo na żywo do użytkowników, i jako taki musiałem rozejrzeć się po żałosnym stanie obecnej technologii strumieniowego przesyłania wideo w przeglądarce. Najpopularniejsze obecnie rozwiązania transmisji strumieniowej na żywo mają problemy ze zgodnością; RTMP wymaga Flasha, HLS jest obsługiwany tylko natywnie w Safari i Chrome na Androida, DASH nie jest natywnie obsługiwany nigdzie, a używanie dash.js wymaga rozszerzeń Media Source , które nie są jeszcze szeroko obsługiwane.
To prowadzi do pytania, które wydaje mi się oczywiste: czy można zastosować proste pobieranie progresywne jako alternatywę dla protokołów takich jak HLS, RTMP i DASH, które wymagają obsługi przeglądarki lub wtyczek?
Pomysł wykorzystania progresywnego pobierania do przesyłania strumieniowego mediów na żywo nie jest bezprecedensowy; ludzie już to robią dla dźwięku. Narzędzia takie jak liveCaster umożliwiają strumieniowe przesyłanie audio MP3 na żywo za pomocą pojedynczej progresywnej odpowiedzi HTTP bez potrzeby uprzednio nagranego pliku MP3, a biblioteki takie jak AmplitudeJS zrobiły wszystko , aby dodać funkcje związane z tego rodzaju transmisją audio na żywo .
Nie widziałem żadnych wystąpień tej techniki wykorzystywane w środowisku naturalnym dla filmu , choć i nie mogę powiedzieć dlaczego. Wygląda na to, że usunąłby warstwę niechlujnych i trudnych problemów ze zgodnością przeglądarki po stosunkowo niewielkim kompromisie. (A kompatybilność jest nadal ogromnym problemem dla streamingu na żywo, nawet gdy robią to profesjonaliści; jeśli spróbuję oglądać wideo na żywo na iPlayer BBC w Firefoksie, to po prostu wyświetli mi komunikat o błędzie z informacją, żebym zainstalował Flash.) Jednak nikt nie używa tę technikę i nigdy nie widziałem, żeby ktokolwiek wspominał o tym pomyśle poza mną.
Dlaczego? Czy jest jakieś podstawowe ograniczenie, którego nie widzę, które uniemożliwiałoby po prostu przesyłanie strumieniowe pliku wideo takiego jak MP4 poprzez stopniowe pobieranie podczas jego generowania i odtwarzanie go w <video>
elemencie podczas pobierania?