如何在ASP.NET Core MVC视图中播放存储在SQL数据库中的视频
实现步骤
1. 新增控制器接口返回视频流
在你的MVC控制器中新增专门返回视频数据的Action,ASP.NET Core原生支持FileResult直接输出二进制内容,同时开启范围请求支持即可实现进度条拖拽、断点续播等常用视频播放能力。
public class VideoController : Controller { private readonly YourDbContext _context; // 构造函数注入数据库上下文 public VideoController(YourDbContext context) { _context = context; } public async Task<IActionResult> GetVideo(int id) { // 根据视频ID查询对应存储的二进制数据 var videoSegment = await _context.VideoSegments.FindAsync(id); if (videoSegment == null) { return NotFound(); } // 返回视频流,根据实际视频格式调整MIME类型,此处以MP4为例 return File(videoSegment.VideoData, "video/mp4", enableRangeProcessing: true); } }
2. 视图中添加HTML5播放器
直接在需要展示视频的cshtml视图中插入video标签,src指向上述接口地址即可:
<!-- 替换参数为实际的视频ID --> <video src="@Url.Action("GetVideo", "Video", new { id = 你的视频ID })" controls width="800"> 您的浏览器不支持HTML5视频播放 </video>
注意事项
- 如果存储的视频不是MP4格式,需要把代码中的
video/mp4替换为对应的MIME类型,比如WebM对应video/webm,AVI对应video/x-msvideo - 如果视频体积普遍较大,可优化为流式返回减少内存占用:
return File(new MemoryStream(videoSegment.VideoData, writable: false), "video/mp4", enableRangeProcessing: true);
- 若需要对视频访问做权限控制,直接在
GetVideo接口中添加权限校验逻辑即可,和普通业务接口逻辑完全一致。
内容的提问来源于stack exchange,提问作者user10309793
相关产品推荐
相关产品推荐

