我们当前的视频缓冲算法有更好的选择吗?



从我在线观看流视频的经验来看,只要您的连接足够快,视频就可以播放。

但是,如果您和视频服务器之间有任何内容正在减慢您的连接,则无处不在的视频缓冲算法变得很明显:

while(user is trying to enjoy video)
{
    if(at least 2 seconds of video has buffered)
    {
        play()
    }
    else
    {
        pause()
        //hope network conditions improve
    }
}

根据您的心情,这可能会令人沮丧,或者完全有趣的是,看到视频播放器认为玩几秒钟并且一遍又一遍地停下来是正确的事情。

是否可以以一种可以使视频最少观看视频的方式来缓冲视频?

似乎是上述算法中的逻辑下一步是这样做类似的事情:

buffer number = 2
annoyance count = 0
while(user is trying to enjoy video)
{
    if(at least buffer number of seconds of video has buffered)
    {
        play()
    }
    else
    {
        annoyance count++
        pause()
        if(annoyance count > 1)
        {
            buffer number++
        }
    }
}

是否有一个巨大的技术因素尚未克服,可以使视频在慢速连接上观看?

是否有更好的算法出于某种原因避免(难以实施,处理能力,尚不清楚等)?

似乎人类可以轻松地计算出您需要在任何给定连接速度上暂停视频的时间,以获得平稳的播放体验。为什么不能计算机?只是数学吗?

是否有一个巨大的技术因素尚未克服,可以使视频在慢速连接上观看?

这是一个缓慢的连接,视频质量的下限,因此,将其流式传输所需的带宽量也是如此(尽管某些视频肯定比可观看的质量要高得多,尽管"可观察的定义"'当然有所不同,也许格式不是最佳的,但我在这方面并没有太确认)。

因此,要么您要等待很长时间才能观看视频,要么您不会光滑的播放。

是否有更好的算法出于某种原因避免(难以实施,处理能力,尚不清楚等)?

似乎人类可以轻松地计算出您需要在任何给定连接速度上暂停视频的时间,以获得平稳的播放体验。为什么不能计算机?只是数学吗?

这些事物未实施的原因可能是懒惰和/或无知,您也许可以争论简单。

这只是简单的数学。计算一段时间内的下载速度 - 这将使您能够计算下载视频剩余时间所需的估计时间,然后您只需要将其与剩余的视频播放时间进行比较,从而使您知道是否应该暂停更长或恢复,当您恢复时,您应该一直保持平稳的播放(除非线路速度不一致,否P>

当然,这种流畅的播放的成本可能需要等待一段时间才能开始观看视频,这在所有情况下都不是可取的。

以上几乎是我所做的 - 我试图暂停它,直到我认为视频将一直顺利进行到最后(好吧,当我想等待时)。

最新更新