关于blob
发布网友
发布时间:2024-09-30 04:26
我来回答
共1个回答
热心网友
时间:2024-11-15 03:05
Blob对象与视频URL格式的解析
HTML5的video标签让视频播放变得简单,只需src属性指向视频地址。然而,随着云存储防盗链的兴起,视频URL的形式开始变化。例如,B站视频中的红框部分,src指向的不再是直接的网络地址,而是看起来陌生的blob:开头的URL。这个改变源于Blob URL技术,它允许以文件形式处理二进制数据。
Blob对象最初被用于数据库存储二进制数据,它包含元数据,如MIME类型,是文件的抽象,可像操作文件那样操作。相比之下,ArrayBuffer是原始二进制数据的通用缓冲区,通过TypedArray或DataView提供读写接口。Blob与ArrayBuffer可以相互转换,而File对象则继承自Blob,提供额外的元数据。
要将视频URL转换成Blob URL,可以利用URL.createObjectURL方法,它接受File、Blob或MediaSource对象,生成指向二进制数据的URL。每次创建都会得到一个唯一的URL,但随页面刷新失效。在file协议的HTML文件中,Blob URL无法直接访问。
在实际应用中,如图片上传预览和网络视频加载,Blob URL能帮助实现。上传图片时,可通过JavaScript动态生成URL,显示预览。对于网络视频,需通过xhr或fetch从远程地址获取Blob对象,然后转换为Blob URL插入到video标签的src属性中。然而,直接加载完整视频会导致加载延迟,因此,真正的流媒体解决方案如HLS或DASH通过分段加载和切换码率,提供无缝播放体验。
MediaSource接口允许在视频播放期间动态添加新的视频数据,通过这种方式实现流媒体播放。最后,要注意的是,普通mp4文件需转换为Fragmented MP4格式,以便客户端按需请求和播放。
本文旨在分享Blob URL技术及其在视频加载中的应用,希望对你理解这一技术有所帮助。如果你在阅读中发现任何问题,欢迎提出,我会及时修正。