Пример #1
0
    void SetCameraOptions(Configuration configuration)
    {
        StreamCameraController cameraController = StreamCamera.GetComponent <StreamCameraController>();

        cameraController.FrameInterval = 1f / configuration.streamFPS;
        cameraController.Resolution    = configuration.streamResolution;
    }
Пример #2
0
    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();
    }