[Question] Webcam through FastAPI #3862
Answered
by
ndonkoHenri
jiang131072
asked this question in
Q&A
-
QuestionUsing FastAPI and Flet to access WebCAM. The Image flickering. I'm on Archlinux KDE (GTK backend). Code sample# server
from contextlib import asynccontextmanager
import cv2 as cv
from fastapi import FastAPI, Response
cap = cv.VideoCapture()
@asynccontextmanager
async def lifespan(app: FastAPI):
cap.open(0)
yield
cap.release()
app = FastAPI(lifespan=lifespan)
@app.get("/frame")
def grab_video_frame() -> Response:
_, frame = cap.read()
_, jpeg = cv.imencode(".jpg", frame)
return Response(content=jpeg.tobytes(), media_type="image/jpeg")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, log_level="critical")
# client
import time
import flet as ft
FRAME_RATE = 12
class LiveImage(ft.Image):
def did_mount(self):
while True:
self.update_frame()
time.sleep(1 / FRAME_RATE)
def update_frame(self):
self.src = f"http://localhost:8000/frame?{time.time()}"
self.update()
def main(page: ft.Page):
page.add(ft.Row([LiveImage()]))
if __name__ == "__main__":
ft.app(target=main) Error messageNo response ------------------------------------------------------
|
Beta Was this translation helpful? Give feedback.
Answered by
ndonkoHenri
Aug 24, 2024
Replies: 1 comment
-
Try setting class LiveImage(ft.Image):
def __init__(self):
super().__init__(gapless_playback=True)
# OR
# self.gapless_playback = True
def did_mount(self):
... |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
jiang131072
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Try setting
Image.gapless_playback
toTrue
(ref).So in your case: