如何在 NodeJS 中创建视频 URL Blob?

How to create a Video URL Blob in NodeJS?

你能帮我在 NodeJS 中创建视频 URL Blob 吗?

    var xhr = new XMLHttpRequest();
    xhr.responseType = 'blob';

    xhr.onload = function() {
        var reader = new FileReader();

        reader.onloadend = function() {
            var byteCharacters = atob(reader.result.slice(reader.result.indexOf(',') + 1));

            var byteNumbers = new Array(byteCharacters.length);

            for (var i = 0; i < byteCharacters.length; i++) {
                byteNumbers[i] = byteCharacters.charCodeAt(i);
            }

            var byteArray = new Uint8Array(byteNumbers);
            var blob = new Blob([ byteArray ], { type: 'video/ogg' });
            var url = URL.createObjectURL(blob);

            console.log(url);
        };

        reader.readAsDataURL(xhr.response);
    };

    xhr.open(
        'GET',
        '...Video URL...'
    );
    xhr.send();

错误输出:

  throw new Error('cannot read as File: ' + JSON.stringify(file));   
  Error: cannot read as File: undefined

我使用了 XMLHttpRequest、URL、FileReader 和 Blob 包

请帮忙,谢谢

Node.JS 没有 XMLHttpRequestFileReaderBlob 等,而是使用 fs, http modules and other built-in classes, like Buffer

尝试在服务器上使用这些浏览器功能,即使使用尝试模拟它们的包,也可能并不总是有效。事实上,许多模拟这些功能的库并不包含所有内容。例如xmlhttprequest节点包不使用.response,只使用文本响应

在 Node.JS 中,不需要 blob URL(你会在哪里使用它?),你只需直接与 Buffer 交互。

// making a http request to fetch something
const http = require("https");

const request = https.request({
  method: "GET",
  url: "https://example.com/video.ogg"
}, (res) => {
  const chunks = [];

  res.on("data", (chunk) => {
    chunks.push(chunk);
  });

  res.on("end", () => {
    // raw byte data
    const buffer = Buffer.concat(chunks);

    /*
     * Interact with Buffer here
     */

  });
});

request.end();

您可以使用 Azure Cloud 存储视频,然后使用 Azure BLOB