В настоящее время я работаю над проектом Django, который, я надеюсь, внесет некоторые преобразования в видеофайлы через Интернет. Чтобы преобразовать видео, я использую Python API opencv и также использую Dajax для выполнения ajax-запросов.
В файле запросов AJAX у меня есть следующий код:
@dajaxice_register
def transform_and_show(request, filename, folder, frame_count, img_number):
detector = Detector(filename) //Object which uses opencv API
dajax = Dajax()
generated_file = detector.detect_people_by_frame(folder, str(img_number))
dajax.assign('#video', 'src', '/media/generated'+folder+generated_file)
return dajax.json()
Идея состоит в том, чтобы преобразовывать видео кадр за кадром и отображать каждый преобразованный кадр в браузере в теге img, давая пользователю ощущение, что он / она просматривает преобразованное видео, поэтому этот метод вызывается в цикле javascript. .
Проблема в том, что в этом подходе объект «детектор» повторно инициализируется на каждой итерации, поэтому он генерирует только изображение, соответствующее первому кадру видео. Моя идея состояла в том, чтобы обойти эту проблему, сделав «детектор» постоянным между запросами, чтобы указатель на следующий кадр видео не устанавливался в 0 при каждом запросе.
Проблема заключается в том, что объект Dectector не может быть выбран, что означает, что он не может быть кэширован или сохранен в объекте сеанса.
Могу ли я сделать что-то постоянное между запросами?
ПРИМЕЧАНИЕ. Я рассмотрел использование подходов HTTP push, таких как APE или Orbit, но, поскольку это всего лишь исследовательский проект, реальной производительности не беспокоит.