gpt4 book ai didi

JavaScript XMLHttpRequest.responseType as "arraybuffer"——如何获取当前数组缓冲区 block

转载 作者:行者123 更新时间:2023-11-30 19:41:08 25 4
gpt4 key购买 nike

我正在尝试将 a 从客户端流式传输到服务器端,以便稍后将视频返回流式传输到另一个客户端。

重点是:

如何从客户端 JavaScript 获取视频 block (可以发送到服务器)?

使用这段代码,例如:

var x = new XMLHttpRequest();
var url = location.href;
x.onreadystatechange = function(){
if(x.readyState == 200) {
console.log("done");
} else {
console.log("chunk",x.response); //this is null until readyState is 200 anyway
}

}
x.onprogress = e => {
console.log("EE",e.target.response); //also null if resposneType is arraybuffer
};
x.responseType="arraybuffer";
x.open("GET","http://localhost:88/videoplayback.mp4",true);
x.send("");

当我尝试在完成加载之前打印响应(以分块获取)时,它只是 null; arraybuffer 仅在完成加载时作为响应返回。

如果我取出 responsetype 并将其保留为纯文本,那么确实会在每个 readystatechange 完成之前将一些 unicode 字符打印到屏幕上,只有 arraybuffer 不会。

那么:这是将视频从客户端流式传输到服务器的最佳方式吗?如果是,我该怎么做呢?如果不行,什么是更好的方法?

最佳答案

事实上,arraybufferblob responseTypes 在下载完成之前不允许访问数据 block 。

现在,有很多方法...例如在最新的浏览器中,您可以启动 ReadableStream from the fetch API ,或者在 Firefox 中,您可以将 responseType 设置为 "moz-chunked-buffer",但这根本不是您需要的。

您所描述的正是WebRTC已经为。所以最好的方法是运行 STUN/TURN 服务器,并使用 MediaStream API 通过它流式传输您的媒体。

关于JavaScript XMLHttpRequest.responseType as "arraybuffer"——如何获取当前数组缓冲区 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55393775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com