在等待 "canplaythrough "事件到 "play() "的过程中,HTML5视频仍有缓冲。

问题描述 投票:0回答:1

我试图确保(尽可能地)只有当一个HTML5视频能够完全无缓冲地播放时才开始播放。对于上下文,视频的MediaStream然后用于与另一个音频源混合,并通过对等的WebRTC连接发送。视频通常为5-10MB,长度为几分钟(即一个不错的宽带连接应该没有问题,在视频播放完毕之前就能很好地加载整个视频)。

为了达到这个目的,我的代码目前等待的是 canplaythrough 事件开始,并调用 play() 当它开火的时候。

这 "工作 "的意义是,视频开始播放,在大多数情况下,缓冲足以让视频不间断地播放。但是,在少数情况下(特别是对于两个人来说,到目前为止,这两个人恰好都在MacBook Air上运行Chrome浏览器,而且显然不是不可思议的,但有不错的宽带互联网连接),视频播放交错和断断续续--我相信这意味着视频没有得到充分的缓冲。

是否有更好的技术来确保视频在大多数浏览器上有足够的缓冲?

使用 fetch() 缓冲整个视频在内存中可能做的伎俩?或者是一个结果 blob() 实际上也是在幕后偷懒缓冲的?

鉴于我无法真正在本地复制这种情况,是否有测试和调试这类问题的良好做法?

html video buffering mediastream
1个回答
0
投票

我已经建立了一个名为 流或不流 这可能对网络方面有帮助。它将告诉你视频启动所需的时间、停顿的次数等。 你可以使用浏览器的devTools来节制网络(在Chrome中,你可以模拟CPU)。

老实说--看看是不是网络的问题,只要比特率(用FFprobe https:/www.streamclarity.comprobe?url=)低于网速,说明你没有网络限制。

还有一种可能。 你的视频的尺寸是多少? 浏览器上的视口尺寸是多少? 如果你要求设备砍掉大量的像素--播放限制可能从带宽转移到CPU处理速度。我已经看到这种情况发生在 移动设备 而在老款Mac上,想要播放4k视频--就是没有足够的CPU来处理那么多像素。

  1. 我会测试网络速度,只是为了确保。
  2. 确保你没有发送超过你需要的像素。 功率不足的设备会有问题。
© www.soinside.com 2019 - 2024. All rights reserved.