Как обрабатывать запросы диапазона для потокового видео / mp4 на сервере - PullRequest
1 голос
/ 13 января 2020

В настоящее время я пытаюсь реализовать ранжированные запросы на моем сервере, работающем Java с Apache HTTPCore с целью пропустить mp4-видео с пропуском.

Я реализовал асинхронную файловую сущность, которая обслуживает диапазон байтов просит правильно. Однако при потоковой передаче через веб-браузер я не могу искать видео. Ожидаемое поведение будет таким: когда я пропускаю, текущий запрос оборачивается, и новый отправляется для соответствующего диапазона байтов. Тем не менее, браузер продолжает использовать самый первый запрос и просто загружает больше из самой текущей буферизованной позиции, то есть никогда не скачет и, таким образом, линейно загружает весь файл линейно.

Итак, мой вопрос, как мне завернуть эту просьбу? Для небольших ограниченных запросов от браузера (например, «Range: bytes = 100-1000») он работает хорошо, потому что отправляется очень быстро, для неограниченных (например, «Range: bytes = 100-» с размером файла 10 ГБ, где объект обслуживает весь файл) запрос просто не завершен. Должен ли я просто разорвать соединение TCP после, скажем, 50 МБ? Отправляет ли клиент запрос на прерывание HTTP, который я не перехватываю? Как это обычно делается с HTTP?

Редактировать: я тестировал с использованием таймаута TCP, который не работал - браузер сообщает об ошибке сети, поэтому один и тот же сокет должен использоваться повсюду.

Заранее спасибо.

...