gpt4 book ai didi

JavaScript 媒体源元素

转载 作者:行者123 更新时间:2023-11-27 22:30:15 28 4
gpt4 key购买 nike

我正在尝试使用 javascript mediasource 播放视频以向用户隐藏视频 URL。但我收到一个错误,

未捕获的InvalidStateError:无法在“MediaSource”上执行“endOfStream”:MediaSource 的readyState 不是“open”。如果视频类型和代码动态传递也会很有帮助。

下面是我的代码,

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<video controls></video>
<script>
var video = document.querySelector('video');

var assetURL = 'adsss.mp4';
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';

if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
var mediaSource = new MediaSource;
//console.log(mediaSource.readyState); // closed
video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen);
} else {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}

function sourceOpen (_) {
console.log(this.readyState); // open
var mediaSource = this;
console.log(mediaSource);
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
console.log(sourceBuffer);
fetchAB(assetURL, function (buf) {
sourceBuffer.addEventListener('updateend', function (_) {
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);
console.log(xhr);
xhr.responseType = 'arraybuffer';
xhr.onload = function () {
cb(xhr.response);
console.log(xhr.response);
};
xhr.send();
};
</script>

最佳答案

上述代码不起作用的原因是,只有开头移动了 moov(电影标题框)的碎片 mp4 视频才会使用媒体源播放。

请引用以下链接,1) Unable to get MediaSource working with mp4 format in chrome2) What exactly is Fragmented mp4(fMP4)? How is it different from normal mp4?

您可以使用 MP4box 工具通过以下命令对视频进行分段,

MP4Box -dash 1000 -rap -frag-rap test.mp4

关于JavaScript 媒体源元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656801/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com