【发布时间】:2022-01-06 19:22:19
【问题描述】:
我想流式传输存储在 azure blob 存储中的视频。前端我正在使用 react。
【问题讨论】:
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
标签: node.js video-streaming azure-blob-storage
我想流式传输存储在 azure blob 存储中的视频。前端我正在使用 react。
【问题讨论】:
标签: node.js video-streaming azure-blob-storage
解决方法尝试以下解决方案
解决方案 1: Azure Media Services:使您能够使用低延迟直播、批量编码、内容保护/DRM 构建媒体应用程序,并将流媒体内容交付给任何设备上的数百万观众.
Azure 媒体服务是一个基于云的平台,可让您构建实现广播质量视频流、增强可访问性和分发、分析内容等的解决方案。
有关更多详细信息,请参阅此文档如何连接到 Azure 媒体服务 v3 node.js SDK:https://docs.microsoft.com/en-us/azure/media-services/latest/configure-connect-nodejs-howto
在 npm 中使用 Azure Media client library for JavaScript。
如果文件是使用 Azure 媒体服务 SDK 上传的,则上传的视频将存储为 Assest 文件。 这样可以更轻松地将视频流式传输到不同的设备。
要流式传输或下载资产,您首先需要通过创建定位器来“发布”它。定位器提供对资产中包含的文件的访问。
创建定位器后,您可以构建用于流式传输或下载文件的 URL。
注意:您要将视频直接上传到 Azure 存储?如果是这种情况,我建议不要将视频直接上传到 Azure 存储,而是使用 Azure 媒体服务 SDK 上传视频
解决方案 2: 尝试使用此代码允许 使用 node.js @azure/storage-blob 包从 Azure 存储流式传输视频。
app.get("/video", async (req, res) => {
try {
// Create the BlobServiceClient object which will be used to create a container client
const blobServiceClient = BlobServiceClient.fromConnectionString(
AZURE_STORAGE_CONNECTION_STRING
);
const containerName = 'videos';
const blobName = req.query.path;
// Get a reference to a container
const containerClient = blobServiceClient.getContainerClient(containerName);
// Get a block blob client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
console.log('\nDownloaded blob content...');
const downloadBlockBlobResponse = await blockBlobClient.download(0);
downloadBlockBlobResponse.readableStreamBody.pipe(res);
} catch (err) {
console.error(err);
res.sendStatus(500);
}
});
更多详情请参考SO Thread:
【讨论】: