Uncaught (in promise) DOMException: Failed to load because no supported source was found.
出现上边的错误一方面是从后台获取到的video的字节数是0,是一个空的视频
判断视频是否可以下载,在项目中遇到一个问题,从手机端上传到数据库的视频,有的是0字节的视频,根本无法播放,控制台报错:Uncaught (in promise) DOMException: Failed to load because no supported source was found.
解决办法:
判断视频的networkState,如果值等于3,则不播放,跳过
- Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
判断视频的资源长度,如果为NAN,那就是无法播放,但是这个有可能受网络状态的限制,在网络不好的时候,获取视频的时长需要一定的时间,所以,这个判断并不是很准确。
- Media.duration; //当前资源长度 流返回无限
我用的是vue写的项目:则用ev.target来获取视频的状态
videoChanging: function (ev) {
if (!this.$refs.video) { return }
//更换video的src
if(this.videosrcTwo){
var status = this.$refs.video.ended
if(status){
if(this.$refs.video.src == this.videosrcOne){
this.$refs.video.src = this.videosrcTwo
console.log('ev.target.networkState', ev.target.networkState)
console.log('ev.target.duration', ev.target.duration)
this.$refs.video.play()
}else{
this.$refs.video.src = this.videosrcOne
}
}
if(ev.target.ended){
this.playing = false
// this.replay =true
}
} else {
this.isLoop = true
}
在上边添加一行代码就可以:
if(ev.target.networkState == 3) return this.$refs.video.src = this.videosrcOne
以下是我获取的当前播放视频的结果:这种结果都会无法播放`
ev.target.networkState 3
ev.target.duration NaN