XMLHttpRequest, aby pobrać duże wideo HTML5 w kawałkach?
Próbuję załadować duży film do tagu za pomocą XMLHttpRequest. Udało mi się to wykorzystać do pracy z małymi plikami wideo przy użyciu następującego kodu:
window.URL = window.URL || window.webkitURL;
var xhr = new XMLHttpRequest();
xhr.open('GET', 'quicktest.mp4', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
var video = document.createElement('video');
video.src = window.URL.createObjectURL(this.response);
video.autoplay = true;
document.body.appendChild(video);
};
xhr.send();
Nie ma problemu, jeśli film jest mały. Jednak mój plik jest dość duży i powoduje błąd braku pamięci, powodując awarię Chrome. Firefox nawet nie zakończy ładowania. Widziałem dwa oddzielne przypadki po wielu godzinach poszukiwań osób sugerujących „pobranie pliku w kawałkach” i umieszczenie ich z powrotem przed wysłaniem do tagu, a nawet znalazłem jeden bardzoobiecujące rozwiązanie dotyczy tego bardzo dokładnego scenariusza. Jestem jednak całkowicie pozbawiony implementacji tego obejścia. Gdyby ktoś mógł skierować mnie we właściwym kierunku… co byłoby wymagane, aby wmieszać tę poprawkę, czy coś w tym rodzaju, bardzo bym to docenił.
Jeśli ciekawi mnie, dlaczego nawet próbuję załadować wideo za pomocą XHR. Chcę automatycznie odtwarzać mój duży film, ale Chrome zawsze przeskakuje i zaczyna go natychmiast odtwarzać, myśląc, że może odtworzyć całą rzecz bez problemu (zawodny wydarzenie „canplaythrough”) i nie mogę znaleźć sposobu, aby uzyskać Chrome, aby buforować cały film przed rozpoczęciem odtwarzania. Więc uciekam się do XHR, ale nie mam szczęścia.