在使用 MediaSource
的时候发现了一些问题:
我使用的代码是 MDN 上的示例代码:
地址: - https://developer.mozilla.org...
代码什么都没变,但是一直报错:
可以发现我上面输出 readyState
的时候明明是 open 的,下面报错 is not open
.
验证了一下发现是我的视频的问题,如果我用该作者的视频,就不会出现这个错误。作者 demo 地址:
我不确定是否是在 URL.createObjectURL(mediaSource)
的时候出现的问题,因为 mimeCodec
定义如下:
var mimeCodec = 'video/mp4; codecs="avc1.42E01E,mp4a.40.2"';
我看 stackoverflow 上有相关的问题, 说与这个有关但是并没有说有什么解决方法。
如果想知道这个视频的编码能够用什么去看? ffmpeg 还是 bento4
而且我换了个视频也是依旧如此的错误。比如:http://shared.youdao.com/mark...
上面那个视频我看了一下他的 Codec 信息:(使用Bento4看的)
得到的结果如下:
然后我把我的 mimeCodec 改了之后还是报同样的错误。
经过查证发现和
Codecs
没有关系。主要的原因是 我使用的 mp4 视频不是
fragmented
的视频。关于
fragmented
MP4 可以查看:https://blog.csdn.net/nonmark...如果要将 非
fragmented
MP4视频转fragmented
MP4 视频,可以借助工具去操作:我使用的是
BenTo4
:https://www.bento4.com/downlo...下载 windows 版本的,然后解压文件夹,在
bin
目录中打开 powershell ,然后运行命令:解析:
.\mp4fragment.exe
Bento4 的一个命令.\v0temp.mp4
需要转换的文件地址v0-new.mp4
转换结束后的文件名称(地址)运行之后,MP4便是 fragmented 的了。
使用相同的代码则不会报错!