基于C# Core与Angular,替换AMS为Azure Video Indexer并搭建简易播放器
关于Azure Video Indexer替换AMS及视频播放方案的解答
一、C#调用存储容器中的旧视频
完全可以直接通过Azure存储SDK访问容器内的旧视频,无需依赖Video Indexer的API读取原始文件,步骤如下:
- 安装
Azure.Storage.BlobsNuGet包,通过存储账户连接字符串初始化客户端 - 获取目标容器和视频Blob的客户端实例,生成临时访问的SAS令牌(避免公开容器带来的安全风险)
- 生成可直接访问的视频URL,供后续播放或导入Video Indexer使用
示例代码:
using Azure.Storage.Blobs; using Azure.Storage.Sas; var storageConnString = "你的存储账户连接字符串"; var containerName = "视频存储容器名"; var blobFileName = "旧视频文件.mp4"; var blobServiceClient = new BlobServiceClient(storageConnString); var containerClient = blobServiceClient.GetBlobContainerClient(containerName); var blobClient = containerClient.GetBlobClient(blobFileName); // 生成有效期1小时的只读SAS令牌 var sasBuilder = new BlobSasBuilder(BlobSasPermissions.Read, DateTimeOffset.UtcNow.AddHours(1)) { BlobContainerName = containerName, BlobName = blobFileName, Resource = "b" }; var sasToken = blobClient.GenerateSasUri(sasBuilder).Query; var accessibleVideoUrl = $"{blobClient.Uri.AbsoluteUri}{sasToken}";
如果需要将旧视频导入Video Indexer做AI索引处理,可使用Microsoft.Azure.VideoIndexer SDK,将上述生成的带SAS的视频URL传入导入接口,完成索引后可获取Video Indexer生成的转码流地址及分析元数据。
二、基于容器视频搭建简易播放器
结合你的技术栈,可按以下方式实现:
- 后端(C# Core):负责生成视频的临时访问URL(如上述SAS令牌方式),提供API接口返回该URL给前端
- 前端(Angular):
- 使用原生HTML5
<video>标签快速搭建基础播放器,直接绑定后端返回的视频URL - 若需更完善的播放功能(如自适应流、播放控制),可集成Video.js、Ngx-video-player等第三方库,支持HLS/DASH等协议(Video Indexer导入视频后会生成这类自适应流地址)
- 使用原生HTML5
示例Angular模板代码:
<div class="video-player-container"> <video controls width="1000" poster="视频封面地址(可选)"> <source [src]="videoAccessUrl" type="video/mp4"> 你的浏览器不支持HTML5视频播放 </video> </div>
若要集成Video Indexer的AI分析能力(如字幕、人物检测结果),可通过后端调用Video Indexer API获取索引数据,再传递给前端展示在播放器旁。
注意事项
- 存储容器优先配置私有访问,通过SAS令牌做临时授权,避免视频文件被公开访问
- 若使用Video Indexer生成的自适应流地址,前端播放器需对应支持HLS/DASH协议(如Video.js需安装
videojs-contrib-hls插件)
内容的提问来源于stack exchange,提问作者Akash Gupta
相关产品推荐
相关产品推荐

