如何从 streamlit 在 django 中显示多个视频流?

How to display multiple video streams in django from streamlit?

提问人:Norbert Yuhas 提问时间:11/10/2023 更新时间:11/10/2023 访问量:23

问:

我有一个代码,应该在 django 页面上显示视频。 我正在尝试将其从 streamlit 转换为 django,但没有成功。 请告诉我如何实现?多个线程到达,所有这些线程都需要显示在 Django 的一个页面上,就像视频墙一样。

streamlit 中的代码:

video_placeholders = [st.empty() for _ in range(3)]
for i, result in enumerate(results):
    image = result.orig_img
    detection_results = model(image)[0]
    detections = sv.Detections.from_ultralytics(detection_results)
    detections = tracker.update_with_detections(detections)

    annotated_frame = process_frame(image)
    resized_image = cv2.resize(annotated_frame, (1024, 768))
    video_placeholders[i % 3].image(resized_image, channels="BGR", use_column_width=True, caption=f"Video {i + 1}")

我正在尝试的 Django 代码在一个地方显示来自所有摄像头的图像,但每个线程都应该有自己的显示:

def video_stream(request):
    def generate_frames():
        for i, result in enumerate(results):
            image = result.orig_img
            detection_results = model(image)[0]
            detections = sv.Detections.from_ultralytics(detection_results)
            detections = tracker.update_with_detections(detections)

            annotated_frame = process_frame(image, stream_index=i)  # Pass stream_index to process_frame
            resized_image = cv2.resize(annotated_frame, (1024, 768))

            _, frame = cv2.imencode('.jpg', resized_image)
            frame = frame.tobytes()

            yield (b'--frame\r\n'
                   b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')

    return StreamingHttpResponse(generate_frames(), content_type='multipart/x-mixed-replace; boundary=frame')

我最近才开始学习 Django,还没有完全理解处理逻辑。

我的html模板:

{% for stream_name in stream_names %}
    <h2>{{ stream_name }}</h2>
    <img src="{% url 'video_stream' %}?stream_index={{ forloop.counter0 }}" style="width: 100%;">
    <hr>
{% endfor %}
Django RTSP 流光

评论


答: 暂无答案