Нужны некоторые указатели в потоковых потоковых изображениях

Я тестирую, как я могу передать конкретное приложение в Интернете.

У меня уже есть код для захвата интерфейса приложения в графическом объекте (и в битовой карте).

The only thing I cannot really find through googling is how to actually put this into a stream, that I can connect to through either vlc or directly via the -tag in HTML5.

Чтобы уточнить, мне нужно указать, как создать поток MJPEG или что-то в этом роде.

Код, который у меня есть сейчас, чтобы захватить приложение:

C# в LINQPad

void Main()
{
    var hwnd = Process.GetProcessesByName("notepad")[0].MainWindowHandle;
    RECT r;
    if(GetWindowRect(hwnd, out r))
    {
        int width = r.Right - r.Left;
        int height = r.Bottom - r.Top;

        Bitmap bit = new Bitmap(width, height);
        Graphics g = Graphics.FromImage(bit);
        try
        {
            while(true) {
                var hdc = g.GetHdc();
                PrintWindow(hwnd, hdc, 0);
                g.ReleaseHdc(hdc);
                bit.Save(@"C:\temp\img.jpg", ImageFormat.Jpeg);

                Thread.Sleep(25);
            }
        }
        catch { }

        bit.Dispose();
        g.Dispose();
    }
}

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
  public int Left;
  public int Top;
  public int Right;
  public int Bottom;
}

HTML для обновления

<!DOCTYPE HTML>
<html>
<head>
    <title>LiveStream</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    
</head>
<body>
    
    <script type="text/javascript">
        var img = $('#hiddenID');

        function loadNewImage() {
            var check = $.ajax({ 
                type: 'HEAD', 
                url: 'img.jpg',
                async: false,
                success: function() { 
                    if(check != null) {
                        if(check.getResponseHeader("Content-Length") == null) {
                            return;
                        }
                    } else {
                        return;
                    }
                }
            });
            img.attr('src', 'img.jpg#t=' + new Date().getTime());
        }

        img.load(function() {
            var nImg = document.getElementById('liveID');
            nImg.src = img.attr('src');
            setTimeout(function() { loadNewImage(); }, 50);
        });

        img.error(function() {
            setTimeout(function() { loadNewImage(); }, 250);
        });

        setTimeout(function() { loadNewImage(); }, 50);
    </script>
</body>
</html>
2
nl ja de
HLS не предназначен для потоковой передачи изображений. Это довольно высокая латентность и не дает большого выбора в кодеках. Возможно, вам захочется использовать ваш подход JS и использовать формат изображений без потерь, например png.
добавлено автор vipw, источник
Я решил это временно, сохранив изображение, которое я получаю, а затем просто использую JavaScript для перезагрузки изображения. Не подходящий способ его решения, но сейчас он работает. :)
добавлено автор NoLifeKing, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot