[Python] Video Streaming App using FastAPI and OpenCV

Discussão em 'Python' iniciado por Stack, Março 16, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to render an HTML page that shows a video streaming from a webcam. However, I am facing the following error:

    500 Server Error TypeError: TemplateResponse() missing 1 required positional argument: 'context'


    My FastAPI app:

    from fastapi import FastAPI
    import uvicorn
    from fastapi import Depends, FastAPI
    from fastapi import FastAPI, Request
    from fastapi.responses import HTMLResponse
    from fastapi.templating import Jinja2Templates
    import cv2

    app = FastAPI(debug=True)
    templates = Jinja2Templates(directory="templates")

    @app.get("/")
    async def index():
    return templates.TemplateResponse("index.html")


    async def gen_frames(camera_id):
    cap= cv2.VideoCapture(0)

    while True:
    # for cap in caps:
    # # Capture frame-by-frame
    success, frame = cap.read() # read the camera frame
    if not success:
    break
    else:
    ret, buffer = cv2.imencode('.jpg', frame)
    frame = buffer.tobytes()
    yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

    if __name__ == '__main__':
    uvicorn.run(app, host="127.0.0.1",port=8000)


    My HTML Page (index.html):

    <!doctype html>
    <html lang="en">
    <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
    integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

    <title>Multiple Live Streaming</title>
    </head>
    <body>
    <div class="container">
    <div class="row">
    <div class="col-lg-7">
    <h3 class="mt-5">Multiple Live Streaming</h3>
    <img src="{{ url_for('video_feed', id='0') }}" width="100%">
    </div>
    </div>
    </div>
    </body>
    </html>


    Traceback:

    [​IMG]

    Continue reading...

Compartilhe esta Página