I Have Trouble While Publish VideoCapture using OpenCV, The Camera Get Blurred when displayed on meet.livekit.io/custom
rubygobay opened this issue · 0 comments
rubygobay commented
Here My Result
Here My Code
async def main(room: rtc.Room):
url = "LINK"
logging.info("connecting to %s", url)
try:
await room.connect(url,
"TOKEN")
logging.info("connected to room %s", room.name)
except rtc.ConnectError as e:
logging.error("failed to connect to the room: %s", e)
return
# publish a track
source = rtc.VideoSource(WIDTH, HEIGHT)
track = rtc.LocalVideoTrack.create_video_track("hue", source)
options = rtc.TrackPublishOptions()
options.source = rtc.TrackSource.SOURCE_CAMERA
publication = await room.local_participant.publish_track(track, options)
logging.info("published track %s", publication.sid)
asyncio.ensure_future(capture_and_process_frame(source))
async def capture_and_process_frame(source: rtc.VideoSource):
argb_frame = bytearray(WIDTH * HEIGHT * 4)
cap = cv2.VideoCapture(0) # Assuming device index 0 for your webcam
arr = np.frombuffer(argb_frame, dtype=np.uint8)
while True:
start_time = asyncio.get_event_loop().time()
ret_val, frame = cap.read()
rgba = cv2.cvtColor(frame, cv2.COLOR_RGB2RGBA)
argb_color = np.array(rgba, dtype=np.uint8)
arr.flat[::4] = argb_color[0]
arr.flat[1::4] = argb_color[1]
arr.flat[2::4] = argb_color[2]
arr.flat[3::4] = argb_color[3]
frame = rtc.VideoFrame(WIDTH, HEIGHT, rtc.VideoBufferType.RGBA, argb_frame)
source.capture_frame(frame)
code_duration = asyncio.get_event_loop().time() - start_time
await asyncio.sleep(1 / 30 - code_duration)