这是关于 Youtube 视频缓冲的问题。
例如,此视频在播放时逐渐缓冲:
(1) http://www.youtube.com/watch?v=XGNOc7FYWKA
因此,如果您暂停视频,它会缓冲到某个点然后停止。
但是试试这个视频。即使您暂停,它也会缓冲整个长度:
(2) http://www.youtube.com/watch?v=fK1eWVrO_fE
我对此进行了一些探索。
对于视频 (1),浏览器在请求 FLV 视频时发送 2 个额外参数:
GET /videoplayback?ipbits=8&algorithm=throttle-factor&cp=U0hRTVJRUV9OUENOMV9KS1VGOlczX1hyNGxsZU5T&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&id=5c634e73b15858a0&factor=1.25&ip=69.0.0.0&source=youtube&key=yt1&burst=40&fexp= 903104%2C910103&keepalive = Yes&sver = 3&itag = 34&签名= 855EF17A58816C002AD9B13DE5556B4A61A9D5541.2A2A2A2A2A2A2AEF1CC3402227895ED952222222237D237D237D223ER = 77D23EY7B5523ER = 74B5523EE7B554B55B554BBIRET = 34B554BBIRE
它在视频播放时滑动范围。
对于视频 (2),浏览器会跳过这 2 个参数,服务器会以纯 HTTP“内容长度:(实际视频文件长度)”响应进行响应。这就是视频完全下载的原因。
现在我的问题:
任何人都知道是什么导致了这种缓冲差异?它是视频的属性,还是服务器的属性,还是其他什么?
理想情况下,如果我没有完全观看视频,我想使用类型 (1) 的缓冲来防止浪费带宽。
FWIW,我尝试通过手动添加范围和保持活动参数来调整第二种情况下的请求。我收到“播放视频时出错”。