使用 Node js 从 azure blob 存储流式传输视频

问题描述 投票:0回答:2

我想流式传输存储在 azure blob 存储上的视频。前端我正在使用react。

node.js video-streaming azure-blob-storage
2个回答
2
投票

关于解决方法,请尝试使用以下解决方案

解决方案 1: Azure 媒体服务:使您能够使用低延迟实时流媒体、批量编码、内容保护/DRM 构建媒体应用程序,并向任何设备上的数百万观众交付流媒体内容。

Azure 媒体服务是一个基于云的平台,使您能够构建实现广播质量视频流、增强可访问性和分发、分析内容等的解决方案。

有关更多详细信息,请参阅此文档如何连接到 Azure 媒体服务 v3 node.js SDK:https://learn.microsoft.com/en-us/azure/media-services/latest/configure-connect-nodejs-如何

适用于 JavaScript 的 Azure 媒体客户端库与 npm 结合使用。

如果使用

Azure 媒体服务 SDK 上传文件,则上传的视频将存储为 
Assest 文件。 这将使将视频流式传输到不同设备变得更容易。

要流式传输或下载资产,您首先需要通过创建定位器来“发布”它。定位器提供对资产中包含的文件的访问。

创建定位器后,您可以构建用于流式传输或下载文件的 URL。

注意:您要将视频直接上传到 Azure 存储吗?如果是这种情况,我的建议是使用 Azure 媒体服务 SDK 上传视频,而不是直接将视频上传到 Azure 存储

解决方案 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


0
投票
将不再支持 Azure 视频服务。不过你可以使用这个方法。对于基本功能,例如从一个点开始视频、在视频中来回播放,您可以使用 Azure CDN。 Azure CDN 将缓存您的视频,因此您拥有基本的流媒体功能。 将视频上传到 Blob 存储后,您需要遵循以下步骤。

    搜索 cdn,并创建
  1. Front Door 和 CDN 配置文件
  2. 选择
  3. Azure Frontdoor,然后快速创建
  4. 填写必填字段,对于
  5. 源类型选择存储(Azure Blob)
  6. 单击“创建”,如果需要,还可以添加一些标签。创建这将需要几分钟的时间。
  7. 当您进入 cdn 页面时,您将看到端点。复制网址。
  8. 您的视频网址将是:https://urlfromcdn/blobcontainername/videoname.mp4
希望能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.