Потоковое (живое) видео с сервера на клиент с использованием. NET Core Blazor - PullRequest
0 голосов
/ 04 августа 2020

Я хочу создать приложение для потоковой передачи видео, используя .NET Core Blazor. Простым вариантом использования будет внедрение веб-камеры в реальном времени на веб-сайт. Пока что мое решение основано на захвате видео OpenCV (OpenCvSharp4.Windows 4.3) и асинхронном c методе, который постоянно перерисовывает источник изображения, конвертируя его в Base64 string. Важно, что видео поступает с сервера. Использование openCV необязательно. Это мой компонент:

@page "/webcam"

@using OpenCvSharp

<div class="top-row">
    <button type="button" class="btn btn-dark" @onclick="CaptureWebCam">Capture</button>
</div>

<img src="@_imgSrc" />

@code {
    private string _imgSrc;

    // Start task for video capture
    protected async Task CaptureWebCam()
    {
        // 0 = default cam (mostly webcam)
        using (var capture = new VideoCapture(0))
        {
            // set every image in videocapture as image source
            using (var image = new Mat())
            {
                while (true)
                {
                    capture.Read(image);

                    // encode image with chosen encoding format
                    string base64 = Convert.ToBase64String(image.ToBytes());
                    _imgSrc = $"data:image/png;base64,{base64}";

                    await Task.Delay(1);
                    StateHasChanged();
                }
            }
        }
    }
}

Моя проблема:

Использование строки base64 для каждого изображения совершенно неэффективно! Из того, что я исследовал, я должен преобразовать свое необработанное видео в контейнер mp4 (например, используя ffmpeg), а затем передать его в элемент html <video>, используя протокол HLS или RTSP: DIY: Сервер потокового видео

Вот где я застрял, потому что я не могу найти хорошую framwework / library / api для потоковой передачи mp4 на веб-сайт с использованием .net core blazor. Есть предложения?

Я нашел что-то вроде VLC и WebRTC, но не уверен, что это сработает. Также я обнаружил, что может работать потоковая передача через SignalR в сочетании с WebRTC: можно передавать потоковое видео с помощью SignalR?

...