如何解决将音频直接从浏览器流式传输到服务器 客户端浏览器代码服务器代码
我想在用户点击 Record 后立即开始上传从麦克风录制的音频,而不是等到他们完成。这可以通过浏览器 JavaScript 实现吗?
我尝试这样做只是为了开始,但只要录音机正在录音,请求就会立即结束,而不是继续。
客户端(浏览器)代码
navigator.mediaDevices.getUserMedia({ audio: true }).then(
(stream) => {
const recorder = new MediaRecorder(stream)
recorder.onstart = async () => {
await fetch("/stream/upload",{
method: "POST",headers: { "Content-Type": "multipart/form-data" },body: stream,allowHTTP1ForStreamingUpload: true,})
console.log("Upload complete!")
}
},(err) => console.error("Error: " + err)
)
服务器代码
const app = express()
app.post("/stream/upload",(req,res,next) => {
res.status(200)
req.on("data",(chunk) => {
// only appears once
console.log("Data received")
res.write(chunk)
})
req.on("end",() => {
// and then this appears immediately after
console.log("Stream ended")
res.send("Ended")
})
})
解决方法
val qqqHeir = Qqq()
qqqHeir.inQqq.funInQqq("S")
仅在录制开始时调用 - 您需要将数据作为 dataavailable
event 的一部分上传 - 为了使该事件更频繁地发生,请使用 onstart
参数timeslice
方法。
话虽如此,根据底层用例,使用 WebRTC 将音频内容流式传输到服务器可能会更好地为您服务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。