我们目前的视频缓冲算法有更好的替代方案吗?

时间:2014-01-19 18:34:35

标签: algorithm video buffer

根据我在线观看流媒体视频的经验,似乎只要你有足够快的连接,视频就可以正常播放。

但是,如果您和视频服务器之间存在任何降低连接速度的问题,那么无处不在的视频缓冲算法就会变得明显:

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++
        }
    }
}

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

是否有更好的算法因某些原因而被避免(难以实现,处理能力强,未知等)?

似乎人类能够轻松计算出在任何给定连接速度下暂停视频所需的时间,以获得流畅的播放体验。电脑为什么不能?这只是数学不是吗?

1 个答案:

答案 0 :(得分:1)

  

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

这是一个缓慢的连接,并且视频质量有一个下限,因此也有流量所需的带宽量(虽然某些视频的质量肯定比可观看的要高很多,尽管'可观看的定义' “当然有所不同,也许格式不是最优的,但我在这方面也不太了解。”

因此,要么您需要等待很长时间才能观看视频,要么您无法顺利播放。

  

是否有更好的算法因某些原因而被避免(难以实现,处理能力强,未知等)?

     

似乎人类能够轻松计算出在任何给定连接速度下暂停视频所需的时间,以获得流畅的播放体验。电脑为什么不能?这只是数学不是吗?

这些事情未实施的原因可能是懒惰和/或无知,你或许可以说简单。

这只是简单的数学。计算一段时间内的下载速度 - 这将允许您计算下载视频剩余部分所需的估计时间,然后您只需将其与剩余视频播放时间进行比较,以便了解是否应暂停更长或恢复,当你恢复时,你应该顺利播放到最后(除非线速度不一致,但只是在播放时间增加一点时间应该在合理的范围内考虑到这一点)。

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

以上几乎就是我所做的 - 我试着让它暂停,直到我认为视频将一直播放到最后(好吧,当我想等待它时)。