Как я могу обрабатывать, транслировать видео и отображать результаты в Django?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу обрабатывать, транслировать видео и отображать результаты в Django?

Сообщение Anonymous »


В настоящее время я участвую в проекте машинного обучения в реальном времени, который легко интегрируется с Django. В этом начинании я глубоко погружаюсь в обработку и потоковую трансляцию видеоконтента. Этот многогранный процесс включает в себя захват видеокадров, их обработку в реальном времени и плавную потоковую передачу в веб-приложение. Кроме того, я интегрировал базу данных Firebase Realtime, чтобы облегчить хранение и извлечение данных, связанных с видеопотоком.

Вот краткий обзор того, что делает код:

Здесь у меня есть функция-генератор под названием «generate(camera)», которая захватывает кадры и выдает их в виде составного потока. В рамках функции «генерация» я одновременно обрабатываю видеокадры, обнаруживаю действия и выдаю каждому кадру тип контента «изображение/jpeg». По завершении обработки видео, обозначенному маркером окончания, обработанные данные сохраняются в базе данных, и пользователь перенаправляется на страницу результатов.

defgenerate(камера): action_labels = ['field_goal', 'пас', 'бег', 'тачдаун'] действия = {'действия': {}} пока правда: данные = camera.get_frame() если len(данные) == 4: кадр = данные['кадр'] результаты = данные['результаты'] действие = данные['action_bboxes'] отметка времени = данные['метка времени'] если len(действие) > 0: пытаться: action_result = метки_действия[действие[0][0]] действия['действия'][метка времени] = action_result # action.append(action_data) кроме: проходить если кадр: выход b'--frame\r\nContent-Type: image/jpeg\r\n\r\n' +frame + b'\r\n\r\n' еще: перерыв если len(данные) == 3: # Загружайте изображения, генерируйте URL-адреса загрузки и сохраняйте их в базе данных реального времени. image_urls = {} для image_name, image_data в data['images'].items(): download_url = dataBase.save_image_reference(data['file_name']['V_name'], image_data, image_name[:-4]) image_urls[имя_изображения[:-4]] = URL_загрузки dataBase.save(data['file_name'], image_urls, действия) выход b'--end\r\n\r\n' Вот процесс_видео, который обрабатывает загрузку видео через форму.

defprocess_video(запрос): если запрос.метод == 'POST': форма = VideoForm(запрос.POST, запрос.ФАЙЛЫ) если form.is_valid(): видео = форма.сохранить() возврат рендеринга (запрос, 'video/video.html', {'video_path': video.file.path}) еще: форма = ВидеоФорма() return render(request, 'video/upload.html', {'form': form}) И здесь я столкнулся с самой серьезной проблемой. В этом контексте у меня есть представление «live_video», которое использует «StreamingHttpResponse» для предоставления потокового ответа и считывает данные из генератора, сгенерированные функцией «generate». Как только конечный маркер обнаружен, я извлекаю соответствующие данные из базы данных и стремлюсь представить их на странице результатов, а затем возвращаю обработанную страницу.

def live_video(запрос, путь к видео): ответ = StreamingHttpResponse(generate(Model(video_path)), content_type="multipart/x-mixed-replace; border=frame") путь_данных = путь_видео.split('\\')[-1][:-4] для чанка в ответ: if chunk == b'--end\r\n\r\n': # Получен конечный маркер db_ref ​​= db.reference(путь_данных) данные = db_ref.get() print(f"Данные команды A после потоковой передачи \n {data['Team A']}") print(f"Команда А набрала очки после трансляции \n {data['Оценка А']}") print(f"Данные команды B после потоковой передачи \n {data['Team B']}") print(f"Оценка команды Б после трансляции \n {data['Оценка Б']}") контекст = { 'Команда_А': данные['Команда А'], 'Команда_B': данные['Команда Б'], 'Score_A': int(данные['Оценка A']), 'Оценка_B': int(данные['Оценка B']) } вернуть рендер (запрос, 'video/results.html', контекст) # Если маркер конца не получен, верните соответствующий ответ return HttpResponse("Поток завершился без получения маркера завершения.") Ниже приведены проблемы, с которыми я столкнулся:
[*]Если я воздержусь от повторения ответа, видео будет воспроизводиться плавно, но я не смогу извлечь данные из генератора или Firebase. [*]С другой стороны, когда я перебираю ответ, потоковое видео исчезает. Хотя я могу получить данные из базы данных, доступ к данным из генератора остается проблемой. Я хочу отобразить эти результаты на странице результатов, но в настоящее время испытываю трудности с их отображением."
Я испробовал множество способов решения этой проблемы, и мне хотелось бы получить несколько советов и рекомендаций, как этого добиться.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как транслировать аудио и видео по ссылке rtmp с помощью ProcessBuilder (ffmpeg)
    Гость » » в форуме JAVA
    0 Ответы
    43 Просмотры
    Последнее сообщение Гость
  • Как транслировать видео с IP-камеры с помощью PyQt5 QtMultimedia?
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Spring boot + Приложение Angular не может транслировать видео
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Spring boot + Приложение Angular не может транслировать видео
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • FFMPEG не может транслировать видео покадрово в прямую трансляцию RTMP на Youtube с использованием Python
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»