视频地址使用blob:

本文介绍了一段JavaScript代码,通过XMLHttpRequest异步请求并处理MP4视频文件(test.mp4),展示了如何利用Blob对象和window.URL接口实现视频资源的动态加载和URL管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <script type="text/javascript">
    var video = document.getElementById("my-video");
    window.URL = window.URL || window.webkitURL;
    var xhr = new XMLHttpRequest();
    var play_url = 'test.mp4';
    xhr.open("GET", play_url, true);
    xhr.responseType = "blob";
    xhr.onload = function() {
    if (this.status == 200) {
    var blob = this.response;
    console.log(blob);
    video.onload = function(e) {
    window.URL.revokeObjectURL(video.src);
    };
    video.src = window.URL.createObjectURL(blob);
    }
    }
    xhr.send();
  </script>

### blob URL 的工作原理 浏览器通过 `URL.createObjectURL()` 方法可以为 `Blob` 或 `File` 对象创建一个唯一的临时 URL。此 URL 通常以 `blob:` 开始,后面跟着一个标识符,该标识符用于唯一地指向内存中的相应对象[^1]。 当页面加载完毕或者不再需要这些资源时,应当调用 `window.URL.revokeObjectURL(url)` 来撤销由 `createObjectURL()` 创建的对象 URL 并释放关联的内存资源。这有助于提高性能并减少潜在的安全风险[^2]。 #### 实际应用场景示例 下面展示了如何利用 `URL.createObjectURL()` 将二进制大对象转换成图像并在网页上显示: ```javascript function createMiniQrcode(blob) { const img = document.createElement('img'); img.onload = function () { // 当图片加载完成后立即回收 object url 所占用的资源 window.URL.revokeObjectURL(img.src); }; img.src = window.URL.createObjectURL(blob); // 设置 src 属性前先获取到对应的 blob:url document.querySelector('.imgQrCode').appendChild(img); } ``` 这段代码片段说明了在处理多媒体内容(如二维码)时怎样有效地管理生命周期内的资源分配与清理操作。 ### 关于 HTTP Range Requests 和 Blob 存储的关系 对于 Azure Blob Storage 中托管的大文件(比如视频),如果希望实现流媒体播放,则需确保客户端发送带有适当范围头部字段 (`Range`) 的请求来分片下载所需的数据块而非整份文档。这是因为现代 Web 播放器能够依据当前播放位置动态调整所请求的内容区间,从而优化用户体验以及网络带宽利用率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值