我正在嘗試渲染一個 HTML
頁面,該頁面顯示來自網路攝影機的視訊串流。但是,我面臨以下錯誤:
500 Server Error TypeError: TemplateResponse() missing 1 required positional argument: 'context'
我的 FastAPI 應用程式:
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'--framern'b'Content-Type: image/jpegrnrn' + frame + b'rn') if __name__ == '__main__': uvicorn.run(app, host="127.0.0.1",port=8000)
我的 HTML 頁面 (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>
回溯:
#
使用模板時需要傳遞請求。
因此,您也可以使用 StreamingResponse
#然後使用 Ajax 或 Axios 等來取得回應。