asp.net core 中配合响应 html5 的音视频播放流,以及文件下载
一、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
asp.net core 中配合响应 html5 的音视频播放流,以及文件下载的更多相关文章
- ASP.NET Core中的响应压缩
介绍 响应压缩技术是目前Web开发领域中比较常用的技术,在带宽资源受限的情况下,使用压缩技术是提升带宽负载的首选方案.我们熟悉的Web服务器,比如IIS.Tomcat.Nginx.Apache ...
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...
- ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图
原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
原文:Application Startup 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay) ASP.NET Core 为你的应用程 ...
- ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态
原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...
- 在ASP.NET Core 中使用Cookie中间件
在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...
- [译]在Asp.Net Core 中使用外部登陆(google、微博...)
原文出自Rui Figueiredo的博文<External Login Providers in ASP.NET Core> 摘要:本文主要介绍了使用外部登陆提供程序登陆的流程,以及身份 ...
- ASP.NET CORE中使用Cookie身份认证
大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cook ...
- 谈谈ASP.NET Core中的ResponseCaching
前言 前面的博客谈的大多数都是针对数据的缓存,今天我们来换换口味.来谈谈在ASP.NET Core中的ResponseCaching,与ResponseCaching关联密切的也就是常说的HTTP缓存 ...
随机推荐
- 实现Comparable接口
1 import java.util.TreeSet; 2 3 4 /** 5 * PriorityQueue, TreeSet是排序集合,存储的对象必须实现Comparable接口. 6 * 原因是 ...
- BST B树 B+树
二叉排序树/二叉搜索树 (BST) 定义 左子树节点值<根节点值<右子树节点值 默认不允许两个节点的关键值相同 进行中序遍历可以得到递增的有序序列 查找效率 取决与树的高度,最好O(log ...
- Ecplise项目导入IDEA(纯小白名词解释)
1. Module 模块 一个大的项目不仅仅是只有Java的源文件,还有数据库,服务器,web等等文件一起使用,将类似于这样分类的文件定义为 module 例如 core Module(核心).web ...
- LeetCode通关:连刷三十九道二叉树,刷疯了!
分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/youngyangyang04/leetcode-master 大家好,我是拿输出博客来督促自己刷题的老三,这一节我们 ...
- Springboot_Email注解爆红
应该是更新后的版本,不会自动导入pom依赖 <!--新版本需要validation启动器 --> <dependency> <groupId>org.springf ...
- 干货:详解C++ sort函数的cmp参数!
学算法的第一天你在学冒泡.桶排 在你还没搞明白快排和归并的时候 你已经学到了数据结构最后的堆排序和希尔排序 可以说排序是很多竞赛生的噩梦-- 于是它诞生了 void std::sort() Sort ...
- Python之requests模块-request api
requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...
- NOIP模拟14「队长快跑·影魔·抛硬币」
T1:队长快跑 基本思路: 离散化·DP·数据结构优化DP 这三个我都没想到....气死. 定义状态数组:\(c[i][j]\)表示在i时最小的a值是j时可以摧毁的最多的水晶数. 那么 ...
- kali linux 的基本命令
Kali Linux 命令集 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统 ...
- Python - pipupgrade 库
使用 pipupgrade 可以批量更新本地包.系统包 安装库 pip install pipupgrade 批量更新 pipupgrade -V -l -y -V.--verbose 显示详细输出 ...