c#,.net,MVC,处理blob视频的播放

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>

在这里插入图片描述

这样就可以得到以blob:开头的临时url地址,而且在向服务端请求时页隐藏了真实的视频地址。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伴之则安博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值