Загрузка данных


import subprocess
import cv2
import numpy as np

# Пробуем HLS поток, который MediaMTX раздает параллельно с WHEP на порту 8888
# Либо WebRTC WHEP / RTSP
STREAM_URL = "http://10.10.10.10:8888/cam/index.m3u8"

# Разрешение камеры робота (обычно 640x480 или 1280x720)
WIDTH = 640
HEIGHT = 480

# Команда для ffmpeg: забирает поток и выплевывает сырые BGR24 байты в stdout
cmd = [
    'ffmpeg',
    '-loglevel', 'quiet',
    '-i', STREAM_URL,
    '-f', 'image2pipe',
    '-pix_fmt', 'bgr24',
    '-vcodec', 'rawvideo',
    '-'
]

print(f"Запуск ffmpeg для потока: {STREAM_URL}...")
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=10**7)

frame_size = WIDTH * HEIGHT * 3

while True:
    raw_frame = process.stdout.read(frame_size)
    if len(raw_frame) != frame_size:
        print("Не удалось прочитать кадр или поток завершен.")
        break

    # Превращаем байты в изображение для OpenCV
    frame = np.frombuffer(raw_frame, dtype=np.uint8).reshape((HEIGHT, WIDTH, 3))

    cv2.imshow("RoboMarvel Stream via FFmpeg", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

process.kill()
cv2.destroyAllWindows()