为什么 bilibili 的进度条与视频实际长度不符?

其实这个根本不是技术难题..而是机智的阿婆主们(投稿者)在与万恶的渣浪和优酷战斗时留下的光荣痕迹!

(说人话!!!!)

好吧...

其实是这样的,无论是 A 站还是 B 站,都只是一个视频分享站点,站上的所有视频源其实都不在服务器上,而是引用了站外的视频资源。而国内最大的视频上传网站自然就是新浪和优酷了,但是渣浪和优酷这两个站有点傲娇,如果你直接上传一些高质量(主要指画质)的视频的话,网站为了节省存储空间会对视频进行二次压制(简称二压,这个压制主要是针对画质和音质,一般不会对视频进行切割)。作为一个对视频质量有着严格要求的投稿者当然不希望自己辛辛苦苦上传几个小时的高清视频被压出马赛克,于是这些机智的小伙伴们基于渣浪在视频转制上的一些小漏洞,研究出了几种能够避免视频被二压的压制方法,例如 VP6,H263 拼接 H264,前黑后黑等。其中最常用的就是后黑压制法了。关于后黑,具体怎么操作就不说了,简单说一下原理。

跟音频一样,实际上绝大部分视频的「质量」(严格一点的说法是码率)并不是一个固定的值,而是随着时间轴不断地浮动的,画面清晰、帧间变化大的时候码率自然会高,画面模糊、帧间变化小的时候码率相对低一点,因此要描述一个视频的总体质量,往往会用到「平均码率」这个概念。而所谓的后黑,实际上就是在原视频的末端,加上一段完全黑屏的无声视频,通过最后这一段超低码率的视频来拉低整个视频的平均码率,使上传视频的平均码率低于渣浪和优酷的二压码率上限(渣浪好像是1000kbps,优酷忘了)来避免二次压制,从而提高视频/音频的质量。

这个做法的最大的副作用就是,在视频的末端会有一段黑屏,A 站和 B 站的播放器应该是对这种黑屏做了优化,当检测到有后黑的情况就直接停止播放(个人猜测,求斧正),所以会出现进度条显示的时间长度和视频实际的时间长度不一致的情况。

所以这真的不是什么技术难题,每一个傲娇的进度条君背后都是阿婆主们的辛酸泪 ̄//ヮ// ̄

向各位自己动手丰衣足食的阿婆主们致敬!

来源:http://www.zhihu.com/question/20900718

未经允许不得转载:博海拾贝 » 为什么 bilibili 的进度条与视频实际长度不符?