我开发了一个托管用户视频的网站。我将视频文件存储在AWS S3中,我通过AWS Cloudfront传送它们,并使用video.js作为网站的播放器,默认为HTML5,闪存为后备。
通常情况下,视频流似乎工作正常,但在某些情况下,我收到用户投诉视频播放缓慢或不连贯的投诉。我想创建一些测试来测量流的性能,以便能够区分用户问题(例如用户端的慢速连接)或我的服务。
是否有收集视频投放指标的最佳做法或工具?我对开源解决方案感兴趣或者我可以自己实现的东西,因为它只是个人项目,但我不想重新发现轮子。
答案 0 :(得分:1)
测试渐进式下载意味着检查传输带宽及其连续性。例如,对于高传输速率,初始客户端缓冲区将被更快地填充并且回放将更快地开始。但是,稍后丢失传输容量会导致重新缓冲。文件的总传输时间必须低于视频时长。
要确定潜在问题,您可以从S3 bucket logs和CloudFront cache statistics and access logs开始。
有一个用Java编写的负载测试工具Apache JMeter。它不能使用JavaScript,因此必须将其配置为直接请求文件。
在单个位置使用负载测试工具的缺点非常明显。不同的地理区域和载体具有不同的特征,测试结果也不同。
有些在线非开源工具可以从多个位置加载测试,但通常会通过一些免费试用来支付费用。
答案 1 :(得分:0)
这是看待这个问题的另一种方式。
<块引用>但在某些情况下,我会收到用户抱怨视频播放缓慢或断断续续的情况。
如果您使用的是自适应 HLS 流,并且您是 CloudFront,并且视频对某些用户来说仍然断断续续,这可能是因为他们自己的互联网连接速度。
在这种情况下,您可以以多种分辨率对视频进行编码(仅使用一项 AWS MediaConvert 作业,顺便说一句) - 例如 1080p、720p、360p、240p、144p 等。
然后 Videojs 有一个流切换器插件,它将 1) 自动开始播放尽可能高的分辨率 - 不会更高 - 这适合观众的连接,2) 通过“设置”(齿轮)图标为用户提供选项在控制栏中,他们可以用来手动切换分辨率。
这样,即使是那些互联网连接非常差的人也应该能够观看您的视频。
当然,另一种选择是使用渐进式下载视频,观看者只需单击播放,然后立即单击暂停,等待视频缓冲,然后在完全下载后播放。
查看Videojs Resolution Switcher demo here。
-- 拉维·贾亚戈帕尔