2013-04-04 11 views
5

Mam odtwarzacz wideo HTML5 (wideo-tag). Po załadowaniu strony wyśle ​​żądanie do pliku wideo.Wideo HTML5: Modyfikuj nagłówki żądań z zakresu http

Czy można zmodyfikować pole Zakres nagłówków żądań http? (Patrz zrzut ekranu, między 2 czerwone linie)

zakres: bajtów = 0- pobierze cały film i chciałbym ograniczyć je na „zakres: bajtów = 0-1000000” np

Screenshot

Plik wideo jest przechowywany na CDN, więc nie mogę nic zrobić na serwerze.

+0

Myślę, że większość obecnych wersji przeglądarek jest dość inteligentna. Kiedy tag wideo pojawił się po raz pierwszy, pamiętam, że tag próbowałby pobrać cały plik tak szybko, jak to możliwe. Nowsze wersje wydają się tylko buforować kilka sekund. Czy widzisz przeglądarkę, która próbuje pobrać cały plik po wczytaniu strony? –

+0

Problem występuje po wstrzymaniu wideo. Następnie przeglądarki zaczną pobierać plik tak szybko, jak to możliwe – Hese

+0

Przeglądarka powinna automatycznie zresetować połączenie (przerywając przesyłanie), gdy jest wystarczająco daleko przed tym, czego wymaga odtwarzanie, a następnie zażądać więcej rozpoczęcia od ostatniego odebranego bajtu, jeśli i kiedy zajdzie taka potrzeba jeszcze. – mark4o

Odpowiedz

1

Możesz wysłać zapytanie o zakres przy pomocy XMLHttpRequest! i pobierz plik blob na window.URL.createObjectURL, jeśli serwer "Accept-Range: Bytes". Tag wideo zapewnia wiele zdarzeń i właściwości, dzięki czemu zawsze wiesz, co jest zbuforowane i gdzie się znajdujesz. Mimo że użytkownik kliknął przycisk postępu, wstrzymaj lub zatrzymaj. Ponieważ właściwości wideo są oparte na czasie w porównaniu do zakresu bajtów, potrzebne są dodatkowe informacje z pliku wideo o nazwie metadane wideo. Grałem z Yamdi, aby uzyskać plik xml odtwarzanego czasu do współczynnika szukania poszukiwanie pliku i ustawić metadane na początku dla .flv.

Po stronie serwera odczytaj nagłówek zakresu (bajty = numer1-numer2 ...), otwórz plik wideo, wyszukaj numer 1, wydrukuj (numer2-liczba1 + 1) bajty i wyślij kilka konkretnych nagłówków: Content-Type, Content-Disposition, HTTP/1.1 206 Częściowa zawartość, zakres treści.

Powinieneś podążać za pozycją szukania. Długość zależy od Ciebie.

+0

Załadowano cały film do obiektu typu blob, ustaw wideo.src na obiekt typu blob. Chrome/Android nadal go nie odtwarza. Próbowano również wysłać plik blob gzip, ponieważ nagłówki żądań Chrome/Android wysyłają żądanie dla gzip – matthewbaskey

Powiązane problemy