К сожалению, сегодня это невозможно напрямую.См. Также: Выборка с ReadableStream в качестве тела запроса
По сути, браузеры не допускают потоковое тело HTTP-запроса.Таким образом, вы не можете выполнить длительный HTTP PUT с данными, сгенерированными на лету.Тело запроса должно быть полностью разрешено до отправки запроса.
Спецификации, касающиеся Fetch и интерфейса Streams, в браузере указывают, что должна быть возможность использовать поток в качестве тела запроса, но ни один браузер не реализуетсегодня.
Есть только два способа вывести потоки из браузеров сегодня.Одним из них является использование веб-сокетов.Это самый простой метод, и он требует от вас обработки кодирования ваших мультимедийных данных (обычно через API MediaRecorder).Второй способ - использовать WebRTC.С WebRTC вы можете либо напрямую использовать его обработку MediaStream (сложно сделать на стороне сервера), либо использовать его потоки данных.Нет никакого реального преимущества в использовании потоков данных и веб-сокетов, если вы просто отправляете данные непосредственно на сервер.
В прошлом я создавал веб-клиенты, использующие метод WebSocket.Смотрите также: https://stackoverflow.com/a/40073233/362536