有一个网页上有HTML5视频。当用户点击开始或当他浏览时间线时,视频开始(从开始或从他选择的位置开始)。但它并不总是立即发生。我想知道用户点击事件花了多少时间以及用户收到视频的第一个字节的时间。
获取用户点击的时间不是问题,但在查看HTML5视频API here时,我无法找到任何接近我正在寻找的事件。
是否可以解决此类事件?
答案 0 :(得分:0)
您收到点击(或“播放”或“搜寻”)事件后收听的事件取决于点击前的视频状态。
如果您有一个新的未播放的视频元素且preload属性设置为“无”,那么您将从网络接收的第一个数据就是元数据。所以你可以听“loadedmetadata”事件。
如果预加载设置为“元数据”,则可能已加载元数据,具体取决于浏览器和平台。 (例如,iPad上的Safari在第一次用户交互之前不会加载元数据或其他任何内容。)在这种情况下,您要监听“loadedmetadata”或“progress”。听取“装载数据”也不会有什么坏处,但我认为“进步”会先发射。
如果预加载设置为“自动”,或者您已经播放了某些视频,则可能会有一些实际的视频数据。虽然您可能在时间线上的当前点拥有数据,但您可能会或可能不会在搜索目的地处拥有数据。这至少取决于您寻求的前方(或后方),数据的进入速度以及浏览器在媒体缓存中的空间大小。
如果目的地时间没有数据(如果您想使用.buffered
属性,可以提前检查,请参阅TimeRanges),然后您看到的下一个事件将是“loadeddata” “或”进步“,可能接着是”canplay“。如果在搜索的目标时间有足够的数据缓冲,则该问题并不真正适用,因为没有其他任何内容可以传输。
但是,在上述任何一种情况下,一旦有足够的数据在该时间线上的新点显示帧并且该数据已被解码,则“搜索”事件将被触发。所以,如果你只选择一个(没有理由你不能使用更多),那么这就是你要选择的。