Подтвердить что ты не робот

Хранение большого файла в хромовой памяти

Проблема

Я сделал приложение-получатель, которое просто показывает видео в цикле на Chromecast. Проблема в том, что Chromecast, похоже, не кэширует видео в кеше. Таким образом, видео постоянно загружается каждый раз, когда заканчивается цикл, и требуется большая пропускная способность. Видео будет размещено на внешнем сервере, поэтому Chromecast будет загружать его из Интернета каждый раз (я не могу изменить эту спецификацию).

Как вы знаете, при отладке приложения-получателя на настольном приложении chrome видео кешируется браузером, поэтому проблема не возникает из ответов HTTP для поведения кэширования.

Решение, которое я исследовал

Я попытался загрузить видеофайл в ajax и воспроизвести его. Проблема заключается в том, что Chromecast, похоже, сбой, когда мой Javascript пытается прочитать поле responseText в xhr, когда результат имеет более 28 МБ (я попытался с 50 МБ файлом (он разбился) и 28 МБ файл (он didn ' t crash), предел может фактически составлять 32 МБ).

EDIT: Я также попробовал этот пример, а также хроматический сбой...

Вопрос

Можно ли кэшировать видео с частотой 50-100 МБ на Chromecast и не позволять ему загружать его каждый раз или есть трюк с памятью, который я мог бы сделать, чтобы сохранить это видео в памяти Chromecast? Загрузка видео один раз для использования приложения будет моим целевым результатом, чтобы уменьшить использование полосы пропускания.

4b9b3361

Ответ 1

Я немного не уверен в этом ответе, потому что считаю это слишком очевидным. Но я попробую:

Вы сказали, что у вас нет проблем с настройкой, где вы загружаете 28 МБ через ajax. Почему бы тебе не сократить его еще больше? Вы могли бы, например, пойти с 4 МБ. Я предлагаю это, потому что это может облегчить проблемы, возникающие в результате "всплесков" вычислений, как вы упомянули, например, при чтении поля responseText объекта xhr.

После того, как вы определились с соответствующим размером блока, вы можете использовать http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-22#section-3, чтобы загрузить свое видео по частям, а затем объединить его в javascript в соответствии с к вашим потребностям. См. Также Загрузите файл в куски в API JavaScript Javascript?

Если у вас есть доступ к серверу, вы также можете разбить файл на стороне сервера, чтобы вы могли отправлять запросы от клиента следующим образом:

example.com/movies/my_movie.mp4?chunk=1

Ответ 2

Попробуйте использовать файл манифеста кэш приложения, чтобы гарантировать, что файл загружается только один раз:

<html manifest="some.manifest">

где some.manifest имеет содержимое:

CACHE MANIFEST
# version 1.0
the_video_to_cache.webm

Это гарантирует, что будущие HTTP-запросы для ресурса не вызовут загрузки. Видео будет перезагружаться только при изменении файла манифеста (так что вы можете изменить строку комментария # -prefixed, чтобы вызвать повторную загрузку). Обратите внимание, что новая версия будет отображаться при загрузке первой страницы после завершения загрузки. После обновления пользователь увидит устаревшее видео один раз (при загрузке новой версии), а затем увидит новую версию при следующем посещении.

Обратите внимание, что это может не сработать, если ваше видео больше, чем разрешенный размер кеша приложения.

Ответ 3

У меня нет хромова, и я не уверен. Можно ли использовать экспериментальные функции, например Quota Management API? Этот API может добавить дополнительную память для сохраненных данных, возможно, вам стоит попробовать ее использовать.