我正在使用Javascript中的Web应用程序连续播放几个mp4视频。一切正常,但在Android上使用Chrome。前三个视频播放正常但是从第四个调用video.play()方法时我在控制台中出现此错误:"未捕获(在承诺中)DOMException:由于未找到支持的源,因此无法加载。 #34;
我确信所有视频源(blob)都是正确的,因为我可以将它们全部加载到另一个标签中。
我正在生成我的视频元素:
generate_video_element = function(src) {
var v = document.createElement('video');
v.src = src
v.type = "video/mp4";
return v;
};
我在调用时遇到此错误(仅限Chrome):
v.play();
它给我一个永远悬而未决的承诺...... 在此先感谢您的帮助。
答案 0 :(得分:0)
根据您提供的信息,该错误的最可能原因是您正在使用的Android设备不支持特定的MP4文件。
MP4是视频和音频流的“容器”规范,容器中的视频和音频可能使用不同的编码,因此某些mp4文件可能受支持,而其他文件可能不在给定的设备或播放器上。
这个答案给出了一个使用像ffprobe这样的工具进行调试的例子,特别是h.264编码的'profile'(本质上是编码中可用的预定义选项集),这通常是一个问题。移动设备:https://stackoverflow.com/a/47478676/334402
答案 1 :(得分:0)
Android上的Chrome存在以下问题:
同时在多个视频上调用video.load()
会导致部分加载挂起。
如果您再检查video.readyState
属性,您会发现以下内容:
HAVE_ENOUGH_DATA
HAVE_METADATA
我不确定在你的情况下调用load
方法究竟在哪里(源代码更改,或者在调用play
时,或者可能根本没有被调用),但是你应该可能会尝试将视频一个接一个地加载而不是并行加载。
我正在研究的下一个解决方案:
video.src
并致电video.load()
video.oncanplaythrough
事件开始加载下一个希望这可以避免这个问题,同时还可以在其他浏览器上工作。