一、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輸出實現斷點續傳或者分段下載