поток веб-камеры через MediaRecorder на net основной веб-сокет на azure blob - PullRequest
0 голосов
/ 23 января 2020

Я создаю angular клиент, который позволит пользователю записывать видео / аудио со своей машины с помощью MediaRecorder, затем я хочу отправить его на свой внутренний сервер и затем сохранить его в Azure Blob (последний этап, но в настоящее время не требуется). Поскольку запись может длиться столько времени, сколько требуется пользователю, а не загружать всю запись в конце, я установил интервал времени в 10 секунд (при локальном тестировании), а затем помещаю это sh на свой внутренний сервер. У меня это работает при использовании HTTP POST, но мне было интересно, если использование веб-сокетов было бы лучше, но я не могу заставить файл работать, когда я делаю это через веб-сокеты.

Angular код

this.recorder.ondataavailable = e => {
    const fr = new FileReader();
    const overThis = this;
    fr.onloadend = function () {
      const test = new Uint8Array(<ArrayBuffer>fr.result);
      overThis.myWebSocket.next(test);
    };
    fr.readAsArrayBuffer(e.data);
}

c# websocket

var buffer = new byte[300000];
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
while (!result.CloseStatus.HasValue)
{
    using (var fs = new FileStream("C:\\test.webm", FileMode.Append))
    {
        fs.Write(buffer, 0, buffer.Length);
    }
}

Я установил байт [] на 300000, потому что когда я делал console.log в angular, он говорил, что длина байта варьируется между 260000-270000.

Следующие шаги, я полагаю, когда я получу эту работу, будет транскодировать из webm в другой формат, а затем сохранить его в BLOB-объекте для последующего воспроизведения.

Любая помощь / совет будут полезны!

...