迅雷对于视频是如何做到边播放边下载的?原理是什么?

迅雷对于视频是如何做到边播放边下载的?原理是什么?

评论 (0)链接2013-04-27 

我是个新手小白,说下自己的理解
视频文件多为流媒体,它的数据存储是按一定的时间间隔分片,然后顺序存储的。当然一些必要的解码信息会存在文件头部。所以边下载边播放 需要先下载文件头,了解文件信息,然后顺序地下载数据部分(即从文件头-》文件尾的顺序下载)。这样只要下载数据的速度大于等于播放解码的速度就可以了。
其实这个问题的关键在下载部分。我现在看视频都是用迅雷离线下载,它基本都是从文件头开始顺序下载的,大概下载5%左右后用播放器打开下载的临时文件播放,一般不会出现太大问题。不过有时会出现花屏。

我补充一点:
对于BT等p2p一样可以联播的问题,这个关键不在于是否顺序播放,而是能否缓冲了足够的信息来还原这几秒钟的画面和音频。也就是说下载也可以是碎片化的不连续的,只要你当前播放时间后面的数据,已经有足够多已经连续起来的数据作为缓冲就没有问题。要想对这个问题有个更深的了解,可以看qvod快播等p2p在线播放软件的时间条。

花屏等问题,不是错误,而是现代播放格式每一副画面记载的不一定是当前页面也有可能是对上一幅画面的修改,就好像1秒钟的黑屏,这一秒钟内画面没有修改,就可以把视频的体积做小一点,节约空间,想法动态较多,细节较丰富的视频相对就大,数据上的标杆叫码率。一般好点的视频平均码率都上千。所以视频不是你想下载这一幕就能看到这一幕,需要有一定的连续才能组织起画面来,如果中间少了一些数据,可能也能播放,但是细节,比如颜色,等就全花了。

这不是很难的技术问题,经常做视频的大神们都清楚。我只是个外围小白,浅述拙见希望能帮到您

qiansen1386
qiansen1386
3
编辑于 2013-05-03
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (7)链接 • 2013-04-28
  • 0 支持
    如果播放时数据存在缺失,就会花屏。缺失数据过多,可能直接不能播放,一般的播放器在这个时候可能就直接结束该视频的播放了。这在播放数据损坏的文件时经常发生。边下载边播放需要处理一下数据没有到位的情况,其他的和一般的播放器播放差不多是一样的 – meng17 2013-05-03
  • 0 支持
    恩....flv好像就是只重绘不同的地方... – 路程888 2013-05-04
  • 0 支持
    avi就是音频视频交汇式的结构...只要加载任何一个部分就可以播放已经加载的地方.....但是avi的媒体信息是在文件最后的. – 路程888 2013-05-04
  • 0 支持
    @路程888 对的,新版flv用的编码好像是h264。rmvb之后产生的新编码基本上都是记录重绘为主。 – qiansen1386 2013-06-15
显示更多隐藏的评论

可以看看vlc源码, 流媒体播放

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (1)链接 • 2013-05-02
  • 0 支持
    流媒体播放的原理和这个边下载边播放的原理不一样吧? – lemonlinger 2013-05-02
德问是一个专业的编程问答社区,请 登录注册 后再提交答案