fastapi给前端传输视频流
时间: 2023-05-21 17:03:35 浏览: 506
FastAPI 可以通过使用 Streaming Response 来传输视频流给前端。以下是一个示例代码:
```python
from fastapi import FastAPI, Response, status
from fastapi.responses import StreamingResponse
import cv2
app = FastAPI()
@app.get("/video_feed")
async def video_feed():
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
frame = cv2.imencode('.jpg', frame)[1].tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
cap.release()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/video")
async def video():
return StreamingResponse(video_feed(), media_type="multipart/x-mixed-replace;boundary=frame")
```
在这个示例中,我们使用 OpenCV 来捕获摄像头的视频流,并将其转换为 JPEG 格式。然后,我们使用 Streaming Response 将视频流传输给前端。在前端,我们可以使用 HTML5 的 video 标签来播放视频流。