Поток много скриншотов с сервера - PullRequest
6 голосов
/ 17 мая 2011

Допустим, у меня есть этот инструмент, который каждые 10 секунд делает скриншот рабочего стола пользователя и загружает изображения на сервер.Изображения удаляются с сервера через 24 часа.Я хочу разрешить пользователю просматривать эти скриншоты в своем браузере.Допустим, каждое изображение имеет размер 300 КБ, и за 24 часа загружено 5000 из них - это 1,5 ГБ данных.Это изображения в формате PNG, и часто один скриншот не сильно отличается от предыдущего, поэтому я думаю, что смог бы сжать их довольно хорошо - но я не уверен, как это будет работать.Я хочу разрешить пользователю просматривать эти изображения в своем браузере.Мне нужен слайдер под изображениями, чтобы пользователь мог перейти к любой точке за 24 часа.Я думаю, что-то вроде плеера YouTube было бы идеально.Где пользователь может прыгать и данные передаются в потоковом режиме и т. Д. Качество изображения важно, потому что пользователь должен уметь читать текст на скриншотах.Я бы предпочел решение на Python.

Я никогда не делал ничего подобного раньше и не уверен, как решить проблему.Что бы вы сделали?

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Быстрое и простое решение состоит в том, чтобы

  1. расположить мозаику по экрану вдоль фиксированной сетки
  2. хранить плитки отдельно, проиндексированные сильным хешем (чтобы исключить дублирование даже между пользователями)
  3. сохранить весь экран в виде двумерного массива хэшей тайлов
  4. восстановить исходный экран в браузере из хэшированных плиток.

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

Реализуйте простую схему подсчета ссылок для повторного удаления плиток.Возможно, вы даже захотите разделить части экрана между пользователями, чтобы еще больше сократить объем хранилища.

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

Обработка изображений в Python может выполняться с помощью PIL .

1 голос
/ 17 мая 2011

Если пользователь в данный момент находится на изображении K и хочет загрузить изображение H, предполагая, что снимки экрана будут в основном такими же, вы можете просто отправить delta diff между H и K.

Вы можете рассчитать различия заранее и сохранить их в кеше или базе данных для более быстрого доступа (но данных будет много), или вы можете вычислить их на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...