void SetCameraOptions(Configuration configuration) { StreamCameraController cameraController = StreamCamera.GetComponent <StreamCameraController>(); cameraController.FrameInterval = 1f / configuration.streamFPS; cameraController.Resolution = configuration.streamResolution; }
public void Start(int port, StreamCameraController cameraController) { Debug.Log($"Starting http server: {port}"); var applicationPath = Application.dataPath; var tcpListener = new TcpListener(IPAddress.Any, port); tcpListener.Start(); new Thread(() => { while (true) { var client = tcpListener.AcceptTcpClient(); var stream = client.GetStream(); if (!IsGetRequest(stream)) { client.Close(); continue; } var id = Path.GetTempFileName(); var sendFrame = new System.EventHandler <FrameUpdatedEvent>((sender, ev) => { try { SendFrame(client, ev); } catch (Exception ex) { Debug.Log($"Encountered error: {ex.Message}"); // Cleanup _clients.TryRemove(id, out var tuple); cameraController.FrameUpdated -= tuple.Item2; tuple.Item1.Dispose(); } }); WriteString(Headers, stream); _clients.TryAdd(id, new Tuple <TcpClient, System.EventHandler <FrameUpdatedEvent> >(client, sendFrame)); cameraController.FrameUpdated += sendFrame; } }).Start(); }