2015-03-22 8 views
9

Chcę losowo wyszukiwać różne punkty w ~ 30 minutowym wideo co 30 sekund. Rozmiar pliku będzie wynosił 100 MB. Kiedy szukam, odtwarzacz rozpoczyna ładowanie od tego momentu lub musi załadować cały plik, a następnie znaleźć w nim czas?Czy wyszukiwanie filmu HTML5 wymaga załadowania całego pliku?

+1

na podstawie [this] (http://blog.grio.com/2012/08/how-to-seek-an-html5-video-at-a-specific-time-on-load.html) Wygląda na to, że możesz **, jeśli ** metadane wideo zostały załadowane, więc przeglądarka zna już rozmiar wideo, więc może poprosić serwer o rozpoczęcie ładowania z innej pozycji, ** i ** serwer wie, jak honorować częściowe żądania przesyłania danych. Najszybszym sposobem na poznanie, oczywiście, jest wypróbowanie testowego adresu URL i zobaczenie, co stanie się z twoją instalacją. –

Odpowiedz

10

To zależy od przeglądarki. Jeśli mówimy o nowoczesnej przeglądarce, to podczas wyszukiwania zwykle wysyłają one nowe żądanie http do serwera zawierającego nagłówek Range:, wskazując "porcję" pliku, który chcą załadować. Dotyczy to tylko przeglądarki korzystającej z protokołu http 1.1 lub nowszego. Myślę, że jeśli przeglądarka obsługuje wideo html5, możesz być dość pewna, że ​​będą korzystać z http 1.1. Należy jednak pamiętać, że klient zawsze będzie ładował coś, co jest. Jeśli więc poszukujesz 5 sekund w vidzie, zasadniczo zacznie on ładować całą rzecz, dopóki nie nastąpi kolejne szukanie.

+2

HTTP/1.1 nie jest problemem ... wszystko obsługuje HTTP/1.1. Problem polega na tym, czy klient może określić, o jaki zakres wnioskować (nie zawsze jest to możliwe, szczególnie w przypadku problematycznych formatów). Często zdarza się, że klient "upuszcza igłę". Zna ogólny rozmiar pliku na podstawie początkowych nagłówków odpowiedzi i powinien wiedzieć, jak długo film jest wyświetlany w czasie na podstawie niektórych nagłówków formatu kontenera. Często będzie się domyślać, gdzie użytkownik szuka i spróbuje go zdekodować. Problem polega na tym, że w przypadku formatów stratnych, wartości bitrate nie zawsze są stałe, więc czas nie jest dokładny. – Brad

+0

Inną kwestią jest to, czy serwer obsługuje żądania zasięgu. Możesz w prosty sposób obsługiwać protokół HTTP/1.1 i nie obsługiwać żądań zasięgu. W rzeczywistości jest to bardzo powszechne, szczególnie gdy ludzie piszą swój własny kod służący do obsługi mediów, nie zdając sobie sprawy z tego, czego potrzebują. – Brad

+0

Tak, to dobra uwaga. Sever musi być w stanie obsługiwać nagłówki zasięgu dla obu stron, aby uzyskać pożądany efekt. Zakładałem, że kontekst jest typowym serwerem WWW, takim jak lighttpd lub nginx, ale jeśli jest to niestandardowy kod serwera, to jest to zdecydowanie czynnik do rozważenia – Harvtronix

1

Nie, zaczyna się ładowanie z podanego znacznika czasu, o ile przeglądarka zna czas trwania wideo.

Powiązane problemy