首先,不要問我為什么要做這件事,但我只是好奇我是否能做到。
我使用 Range-header 從服務器請求視頻。服務器向我發送視頻的緩沖區資料。一般來說,我有大約 3 個請求,然后我有所有三個陣列緩沖區的完整陣列。我可以以某種方式連接它們,然后將連接轉換為 blob,創建一個URL.createObjectUrl用于觀看視頻的 url?
(在下面的代碼中,我們假設我們沒有獲取錯誤)
const getVideoBuffers = async (ranges, currentBuffers = [], i = 0) => {
const res = await fetch("video", { headers: { Range: ranges[i] } });
const buffer = await res.arrayBuffer();
currentBuffers.push(buffer);
i = 1;
if (res.ok && res.status !== 206) return currentBuffers;
return getVideoBuffers(ranges, currentBuffers, i);
}
const videoRanges = [...];
const buffers = await getVideoBuffers(videoRanges);
// Need this function
const concatedBuffers = concatBuffers(buffers);
const blob = new Blob([concatedBuffers], { type: "video/mp4" });
const url = URL.createObjectUrl(blob);
const video = document.createElement("video");
video.src = url;
還是我的想法完全錯誤?那么,我怎樣才能實作想要的東西呢?
uj5u.com熱心網友回復:
Blob 實體化允許連接多個 ArrayBuffer:
new Blob([ ab1, ab2, ab3 ])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414240.html
標籤:
上一篇:通過node-red執行http請求并執行stript
下一篇:重定向nginx后更改URL
