我使用 URL.createObjectURL() 生成本地视频的 blob-url。 它适用于大多数浏览器(经过测试的移动和桌面浏览器)。 但现在我尝试使用 Chromium(用于自动测试目的)。 它确实生成了 blob-url,但它只是空的。 所以我无法将此网址放入视频源。显然,像“loadedmetadata”这样的视频事件不会触发。 此外,blob 链接在其他选项卡中不起作用。
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);
}
示例 https://jsfiddle.net/pwdhs42v/3/ 适用于除 Chromium (122.0.6258.0) 之外的所有浏览器 知道为什么会这样吗?这可能是一些安全限制吗?如果是这样,我可以禁用它吗?
提前致谢!
我检查了 chrome://media-internals,并得到了这些错误:
*FFmpegDemuxer:跳过无效或不支持的视频轨道
FFmpegDemuxer:不支持流
“警告,FFmpegDemuxer 无法从复用流创建有效/支持的视频解码器配置,*
Chromium 不支持开箱即用的 h264 编解码器,讽刺的是,我所有的测试视频都是以这种格式编码的。
我应该在这里检查一下: https://www.chromium.org/audio-video/
所以,我必须使用其他视频格式或构建支持 h264 的 Chromium。