您现在的位置是:网站首页> C#技术
C#,.NET,MVC,处理blob视频的播放
- C#技术
- 2024-05-25
- 611人已阅读
C#,.NET,MVC,处理blob视频的播放
现在许多视频在线观看网站,你如果打开chrome查看其video标签,会发现它的src是一个以blob:开头的地址。可以看到他这里引入的并不是一个在线的视频存放地址,这样你通过爬虫脚本也无法下载该视频文件,通过一个new tab打开也于事无补,会提示你地址错误。
后端实现代码如下(示例):
//生成视图页面控制器
public ActionResult Index()
{
return View();
}
public void Video()
{
//这里需要获取全路径 如:D:\project\images\video\products\video.mp4
string filePath = this.Server.MapPath("~/images/video/products/video.mp4");
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
if (fileInfo.Exists == true)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
//Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileInfo.Name));
Response.AddHeader("Content-Length", "" + fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
}
前端界面代码如下(示例):
<div>
<video id="video_player" width="660" height="364" controls="controls"></video>
</div>
<script>
//创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
//配置请求方式、请求地址以及是否同步
xhr.open('POST', '/AAAtest/Video', true);
//设置请求结果类型为blob
xhr.responseType = 'blob';
//请求成功回调函数
xhr.onload = function (e) {
if (this.status == 200) {//请求成功
//获取blob对象
var blob = this.response;
var video = document.getElementById('video_player');
//获取blob对象地址,并把值赋给容器
var obj_url = window.URL.createObjectURL(blob);
video.src = obj_url;
//video.play();
//setTimeout("revokeUrl('" + obj_url + "')", "2000"); //这里是在2秒后停止了播放
}
};
xhr.send();
function revokeUrl(url) {
window.URL.revokeObjectURL(url);
}
</script>
上一篇:C#经验总结