Rtspvideoplugin
__declspec(dllexport) void UpdateTexture(void* player, void* texturePtr, int width, int height) uint8_t* rgbData; ((FFmpegRTSPDecoder*)player)->readFrame(&rgbData, &width, &height); // Copy to Unity Texture2D native pointer memcpy(texturePtr, rgbData, width * height * 3);
bool connect(const std::string& url, FrameCallback callback) m_callback = callback; m_url = url; // 1. Parse URL (rtsp://ip:port/path) // 2. Open TCP socket to server:554 // 3. Send OPTIONS, DESCRIBE, SETUP, PLAY (see full code in repo) // 4. Start receive thread m_running = true; m_thread = std::thread(&RTSPVideoPlugin::receiveLoop, this); return true; rtspvideoplugin
void stop() m_running = false; if (m_thread.joinable()) m_thread.join(); Send OPTIONS, DESCRIBE, SETUP, PLAY (see full code
; 4.1 Unity Plugin (C++ -> C#) Expose C functions: m_thread = std::thread(&RTSPVideoPlugin::receiveLoop
import cv2 import numpy as np from threading import Thread class RTSPVideoPlugin: def init (self, rtsp_url): self.url = rtsp_url self.cap = None self.running = False self.frame = None
