Chromium浏览器Blob视频链接失效?实为H.264格式不支持咨询
Chromium中Blob URL视频无法加载的问题:原因与解决方案
经确认,该问题与Blob本身及URL.createObjectURL()的使用无关,根本原因是你所用的Chromium 122.0.6258.0版本不支持H.264视频编码格式。
问题背景与原因解析
多数主流浏览器(包括正式版Chrome)默认支持H.264,但部分用于自动化测试的Chromium定制版本(尤其是未启用商用 codec 的版本)会移除对H.264的支持——因为H.264涉及专利授权,开源的Chromium核心本身并不强制包含该编码支持。
你遇到的「Blob URL生成但无法作为视频源、loadedmetadata事件不触发、新标签页无法打开」等问题,本质是Chromium无法解码H.264视频文件,导致视频资源加载失败,并非安全限制导致。
解决办法
- 更换视频编码格式:将测试视频转换为Chromium原生支持的开源编码(如VP9/AV1),这类编码无需专利授权,Chromium默认支持。
- 使用带商用Codec的Chromium版本:如果必须使用H.264,需采用包含H.264支持的Chromium发行版(比如正式版Chrome),而非纯开源的Chromium测试版本。
- 验证编码支持:可在Chromium控制台执行以下代码确认是否支持H.264:
返回MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E"')false则说明当前版本不支持H.264编码。
原代码示例
function setVideo(el) { console.log('inited'); const file = el.files[0]; let video = document.querySelector('#video'); let url = URL.createObjectURL(file); let videoSrc = video.querySelector('source'); videoSrc.src = url; videoSrc.setAttribute('type', file.type); let metaLoaded = function () { console.log('metaloaded'); }; video.load(); if ( video.readyState > 0 ) metaLoaded(); else video.addEventListener('loadedmetadata', metaLoaded, false); }
内容的提问来源于stack exchange,提问作者Maksim
相关产品推荐
相关产品推荐

