关于视频播放的断点续传实现(.NET)
2017-08-02 10:34
357 查看
在实现视频播放功能时,如果不是采用了CDN服务器,而是将视频播放文件直接放在了站点下,这时考虑采用断点续传,有利于优化播放速度。而且,大多数播放器支持缓冲播放。
闲话不多说,直接上代码:
闲话不多说,直接上代码:
using System; using System.IO; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Video3dApp.Controllers { public class Video3dController : Controller { public ActionResult BrandUSA() { return View(); } public ActionResult Detail() { return View(); } [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post | HttpVerbs.Options)] public void ReadVideo() { var reqRange = Request.Headers["Range"]; string[] reqBlockRange = null; if ( !string.IsNullOrEmpty(reqRange) ) { reqBlockRange = reqRange.Replace("bytes=", "").Split('-'); Response.StatusCode = 206; Response.AddHeader("status", "206"); } Response.AddHeader("accept-ranges", "bytes"); Response.AddHeader("access-control-allow-methods", "HEAD, GET, OPTIONS"); Response.AddHeader("access-control-allow-origin", "*"); Response.AddHeader("cache-control", "public, max-age=30726563"); Response.AddHeader("content-disposition", $"attachment; filename=test.mp4"); Response.ContentType = "video/mp4"; string fileName = Server.MapPath("/UploadFiles/test.mp4"); using ( var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ) using (var reader=new BinaryReader(stream)) { long fileSize = stream.Length; long startPosition = 0; long partialSize = fileSize; if ( reqBlockRange != null ) { startPosition = Convert.ToInt32(reqBlockRange[0]); partialSize = fileSize - startPosition; } //Read partial content into the buffer with a specified size byte[] buffer = new byte[(int)partialSize]; // go to offset address reader.BaseStream.Seek(startPosition, SeekOrigin.Begin); // fill buffer from starting at address to address + BlockSise reader.Read(buffer, 0, (int)partialSize); Response.AddHeader("content-range", $"bytes {startPosition}-{startPosition + partialSize - 1}/{fileSize}"); Response.AddHeader("Content-Length", $"{partialSize}"); Response.BinaryWrite(buffer); } } } }
相关文章推荐
- 关于微信H5自动播放视频-canvas实现逐帧动画效果加音频
- 在ASP.NET网站中实现带列表的视频播放
- 在ASP.NET网站中实现带列表的视频播放
- 在ASP.NET网站中实现带列表的视频播放
- 使用NET实现视频播放
- 关于在asp.net中播放MP4格式的视频(好吧,只兼容支持html5的浏览器,ie8及以下的都歇菜了)
- 关于asp.net 做视频播放网站的积累
- asp.net实现播放视频
- 在ASP.NET网站中实现带列表(其由xml文件控制生成)的视频播放
- 使用c#.NET实现视频播放
- 关于实现背景为自动循环播放、无声的、宽度自适应视频的相关问题
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- MediaPlayer + SurfaceView 来实现 视频播放
- android实现登录页面视频播放背景
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
- 关于华硕主板播放视频文件蓝屏的问题(ASUS P5B)
- cocos2dx 3.3 视频播放的实现-VideoPlayer的使用
- ASP.NET下调用ffmpeg与mencoder实现视频转换截屏
- 关于jQuery在Asp.Net Mvc 框架下Ajax文件上传的实现
- 关于视频播放性能测试