目前很多视频网站都是采用video标签形式,src是blob://http开头,效果如下

实现方式,用用H5的MediaSource方法
<head>
<meta charset="UTF-8">
<title>blob</title>
</head>
<body>
<video id="video" controls="controls"></video>
<script type="text/javascript">
var video = document.querySelector('video');
var assetURL = 'https://adtuu-blog.oss-cn-shenzhen.aliyuncs.com/v0-new.mp4';
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
// video/mp4; codecs="avc1.42E01E, mp4a.40.2
//var mimeCodec = 'video/webm;codecs="vorbis,vp8"';
var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
if('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
var mediaSource = new MediaSource();
video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen);
} else {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}
function sourceOpen() {
console.log(this); // open
var mediaSource = this;
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
fetchAB(assetURL, function(buf) {
console.log(buf)
console.log(sourceBuffer);
sourceBuffer.addEventListener('updateend', function() {
console.log(mediaSource);
mediaSource.endOfStream();
video.play();
console.log(mediaSource.readyState); // ended
});
sourceBuffer.appendBuffer(buf);
});
};
function fetchAB(url, cb) {
console.log(url);
var xhr = new XMLHttpRequest;
xhr.open('get', url);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
console.log(xhr.response);
cb(xhr.response);
};
xhr.send();
};
</script>
</body>另外,有网友写了一个demo,可以看下
http://postbird.gitee.io/postbirdmp4toblob/
源代码

fffffasdfasdfasdfasdfas;kdfjlaskl;dfjaskl;dfjakls;dfjkal;sfdjlaks;df als;dfj awkls;dfj asl;dfj aslk;dfjaskl;dfjas;ldf
访客评论