Вы задаете несколько вопросов одновременно. Давайте разбить его на куски.
Как мне захватить звук?
Я предполагаю, что вы хотите записать звук с микрофона или другого устройства ввода звука. Для этого вам нужно захватить его с помощью MediaDevices API. В частности, вы хотите вызвать getUserMedia()
, чтобы получить экземпляр MediaStream с определенного записывающего устройства.
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
Как я могу записать MediaStream?
Вы можете использовать MediaRecorder, чтобы взять MediaStream, запустить его через кодек, преобразовать его в определенный формат, такой как WebM, и вывести Blob.
https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder
Как я могу получить данные MediaStream во время их записи?
Когда вы вызываете mediaStream.start()
, обязательно вызывайте его с параметром timeslice. Что-то вроде mediaStream.start(3000)
будет вызывать событие dataavailable
примерно каждые 3 секунды. Затем вы можете взять эти данные и отправить их куда угодно.
Как сделать HTTP-запрос с телом запроса потоковой передачи?
Ты не можешь. По крайней мере, не сегодня. См. Также: Получение с ReadableStream в качестве тела запроса
Что вы можете сделать - это отправить данные через веб-сокеты. Вы также можете делать HTTP-запросы для каждого чанка.