asp.net core 中配合响应 html5 的音视频播放流,以及文件下载
阅读原文时间:2023年07月12日阅读:2

一、asp.net core 中配合响应 html5 的音视频播放流,以及文件下载

问题描述:

目前测试了在 Windows(谷歌浏览器)、Android(系统浏览器、QQ、微信)、iOS 三个系统不同浏览器中

对 html 5 页面 audio、video 标签的文件流输出

Windows(谷歌浏览器)支持最宽泛,只要保证是正确的文件流,基本都可以正常播放

Android(系统浏览器)也是一样,基本都支持,但 QQ 和 微信,对音乐是都可以支持,对视频,必须可以支持按请求的范围返回数据(即第一个请求响应为 HTTP 206)

iOS 在以上的要求基础上,要求返回的 content-type 必须正确才可以。

所以无论从服务器流量考虑,还是从最佳兼容性考虑,服务器对音视频流的返回,最好都支持 HTTP 206 按请求范围返回。

解决方案:

1、如果文件是由 iis 直接返回是没有问题的,iis 会自动做支持;

2、但很多情况下,考虑防止资源的盗链,可能需要由程序中转输出。

在 ASP.NET MVC 时,提供了 ByteRangeStreamContent 方法对结果进行返回。

在 asp.net core 中,其实更是直接内置了对该功能的支持,在 File()、PhysicalFile() 方法中,都有一个参数为 enableRangeProcessing 的重载,直接设置 true 即可启用对按范围返回文件流的支持。

使用带有 fileDownloadName 参数的重载,即可实现标准的文件下载响应内容。

3.自定义文件输出, 处理请求头Range规则,具体参考:.Net Core 实现 自定义Http的Range输出实现断点续传或者分段下载

更多:

.Net Core 实现 自定义Http的Range输出实现断点续传或者分段下载

EF Core Sequence contains no elements

.Net Core3 新特性整理