鍍金池/ 問答/HTML5  網(wǎng)絡(luò)安全  HTML/ video 轉(zhuǎn) blob:Failed to execute 'endOfStr

video 轉(zhuǎn) blob:Failed to execute 'endOfStream' on 'MediaSource'?

在使用 MediaSource 的時(shí)候發(fā)現(xiàn)了一些問題:

我使用的代碼是 MDN 上的示例代碼:

地址: - https://developer.mozilla.org...

代碼什么都沒變,但是一直報(bào)錯(cuò):

clipboard.png

可以發(fā)現(xiàn)我上面輸出 readyState 的時(shí)候明明是 open 的,下面報(bào)錯(cuò) is not open.

驗(yàn)證了一下發(fā)現(xiàn)是我的視頻的問題,如果我用該作者的視頻,就不會(huì)出現(xiàn)這個(gè)錯(cuò)誤。作者 demo 地址:

我不確定是否是在 URL.createObjectURL(mediaSource) 的時(shí)候出現(xiàn)的問題,因?yàn)?mimeCodec 定義如下:

var mimeCodec = 'video/mp4; codecs="avc1.42E01E,mp4a.40.2"';

我看 stackoverflow 上有相關(guān)的問題, 說與這個(gè)有關(guān)但是并沒有說有什么解決方法。

如果想知道這個(gè)視頻的編碼能夠用什么去看? ffmpeg 還是 bento4

而且我換了個(gè)視頻也是依舊如此的錯(cuò)誤。比如:http://shared.youdao.com/mark...

上面那個(gè)視頻我看了一下他的 Codec 信息:(使用Bento4看的)

得到的結(jié)果如下:

clipboard.png

然后我把我的 mimeCodec 改了之后還是報(bào)同樣的錯(cuò)誤。

回答
編輯回答
奧特蛋

經(jīng)過查證發(fā)現(xiàn)和 Codecs 沒有關(guān)系。

主要的原因是 我使用的 mp4 視頻不是 fragmented 的視頻。

關(guān)于 fragmented MP4 可以查看:https://blog.csdn.net/nonmark...

如果要將 非 fragmented MP4視頻轉(zhuǎn) fragmented MP4 視頻,可以借助工具去操作:

我使用的是 BenTo4https://www.bento4.com/downlo...

下載 windows 版本的,然后解壓文件夾,在 bin 目錄中打開 powershell ,然后運(yùn)行命令:

 .\mp4fragment.exe .\v0temp.mp4 v0-new.mp4

解析:

  • .\mp4fragment.exe Bento4 的一個(gè)命令
  • .\v0temp.mp4 需要轉(zhuǎn)換的文件地址
  • v0-new.mp4 轉(zhuǎn)換結(jié)束后的文件名稱(地址)

運(yùn)行之后,MP4便是 fragmented 的了。

使用相同的代碼則不會(huì)報(bào)錯(cuò)!

2017年12月30日 10:56