You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I successfully uploaded my video stream using the Python SDK on my PC.
I utilized https://meet.livekit.io/?tab=custom for frontend display. Simultaneously, locally, I displayed real-time images from my camera using OpenCV. The local image resolution is 720*1280. However, on https://meet.livekit.io/?tab=custom, the video appears noticeably blurry.
Could you please advise on potential reasons? Is it possible that I haven't configured the settings correctly in my code?
Below is my code (I've omitted the token due to security reasons):
import asyncio
import logging
from signal import SIGINT, SIGTERM
import cv2
import numpy as np
from livekit import rtc
URL = "ws://localhost"
TOKEN = ""
async def publish_camera_video_stream(source: rtc.VideoSource):
argb_frame = None
arr = None
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
while True:
ret, frame = cap.read()
if not ret:
continue
logging.info(f"frame type: {type(frame)}")
logging.info(f"frame shape: {frame.shape}")
if frame is not None and argb_frame is None and arr is None:
height, width, _ = frame.shape
logging.info(f"Height: {height}, Width: {width}")
argb_frame = rtc.ArgbFrame.create(rtc.VideoFormatType.FORMAT_ARGB, width, height*2)
arr = np.frombuffer(argb_frame.data, dtype=np.uint8)
logging.info(f"argb_frame: {argb_frame.data.shape}")
flipped_frame = cv2.flip(frame, 0)
combined_frame = cv2.vconcat([frame, flipped_frame])
cv2.imshow("Video Stream", combined_frame)
arr.flat[::4] = combined_frame[:, :, 0].ravel()
arr.flat[1::4] = combined_frame[:, :, 1].ravel()
arr.flat[2::4] = combined_frame[:, :, 2].ravel()
arr.flat[3::4] = 0
video_frame = rtc.VideoFrame(
0, rtc.VideoRotation.VIDEO_ROTATION_0, argb_frame.to_i420()
)
source.capture_frame(video_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
async def main(room: rtc.Room):
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()
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(publish_camera_video_stream(source))
if __name__ == "__main__":
logging.basicConfig(
level=logging.INFO,
handlers=[logging.FileHandler("publish_hue.log"), logging.StreamHandler()],
)
loop = asyncio.get_event_loop()
room = rtc.Room(loop=loop)
async def cleanup():
await room.disconnect()
loop.stop()
asyncio.ensure_future(main(room))
for signal in [SIGINT, SIGTERM]:
loop.add_signal_handler(signal, lambda: asyncio.ensure_future(cleanup()))
try:
loop.run_forever()
finally:
loop.close()
I would greatly appreciate any insights or guidance to resolve this resolution issue during the video stream. Thank you for your assistance
The text was updated successfully, but these errors were encountered:
I successfully uploaded my video stream using the Python SDK on my PC.
I utilized
https://meet.livekit.io/?tab=custom
for frontend display. Simultaneously, locally, I displayed real-time images from my camera using OpenCV. The local image resolution is 720*1280. However, onhttps://meet.livekit.io/?tab=custom
, the video appears noticeably blurry.Could you please advise on potential reasons? Is it possible that I haven't configured the settings correctly in my code?
Below is my code (I've omitted the token due to security reasons):
I would greatly appreciate any insights or guidance to resolve this resolution issue during the video stream. Thank you for your assistance
The text was updated successfully, but these errors were encountered: