예제 #1
0
        //private string
        public Task TakeScreenshot()
        {
            var result = _ObsClient.TakeScreenshot();

            //_Client.
            //_PostScreenshotTask = Task.Run(() => _Client.SendAsync("PostScreenshot", result));

            _Client.SendAsync("PostScreenshot", clientStreamData(result));

            return(Task.CompletedTask);

            async IAsyncEnumerable <string> clientStreamData(string imageData)
            {
                var sr = new StringReader(imageData);

                Debug.WriteLine($"ImageData ({imageData.Length}): " + imageData.Substring(imageData.Length - 20, 20));

                var buffer = new char[2000];

                while (true)
                {
                    var lengthRead = sr.ReadBlock(buffer, 0, 2000);
                    if (lengthRead == 0)
                    {
                        break;
                    }
                    yield return(new string(buffer, 0, lengthRead));

                    buffer = new char[2000];
                }
                //After the for loop has completed and the local function exits the stream completion will be sent.
            }
        }
예제 #2
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            await _ObsClient.Connect();

            if (string.IsNullOrEmpty(_Configuration["ObsTest"]) || !bool.Parse(_Configuration["ObsTest"]))
            {
                await _BotClient.Connect();
            }
            else
            {
                var imgString = _ObsClient.TakeScreenshot();
                var bytes     = Convert.FromBase64String(imgString);
                File.WriteAllBytes("c:\\dev\\stream\\screenshots\\test.png", bytes);
            }
        }