为什么有的视频下载了一点就能播放,有的视频不下载完就播放不了

141 篇文章 ¥19.90 ¥99.00
作者:Happy Ennding
链接:https://www.zhihu.com/question/54673095/answer/140528753
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

因为一般下载/文件共享/分享软件是不会有这个选项的(即使有也不会默认开启这个选项的)
P2P下载是把整个文件分成几M,几M的小文件去下载,而且肯定不是按顺序下载的,你如果得不到播放必须的文件部分就不能播放,有时候运气不好,可能一直下载不到播放必须的文件部分。
在P2P网络里,文件的不同部分下载速度是很不一样的。为了下载速度,下载工具会优先下载,当时下载速度最快的部分,下载速度不那么快的部分,就等等看能不能找到速度更快的资源。
====以下可以跳过不看=====
(P2P网络的运行大致是这样的,对服务器(BT,ED2K)/已知的用户(DHT,KAD)询问:我要下载XXXX文件,请问谁有?他们会告诉你:1、我有文件XX部分,可以给你,2、我没有,但是我知道谁有,3、我没有,但我可以告诉你我有哪些认识的人,你可以问他们。)
====以上可以跳过不看=====
而不同为文件封装格式播放所需的必须部分,存放的位置是不一样的,有些比较古老的格式,比如AVI就没太考虑这个,关键数据全放在开头和结尾。MP4就先进的多,他只放了少量信息在开头,剩下的被分成一个个小部分,每个部分都包含此部分必须信息+视音频。这样你只需要下载一个很小的开头+任意一个完整的小部分,就可以播放你下载到的这一小部分了。



举个例子吧:

AVI
<img data-rawheight="642" data-rawwidth="255" src="https://i-blog.csdnimg.cn/blog_migrate/703cbf1989ad8116833ca90333bbd47f.png" class="content_image" width="255">你会发现他的封装结构里,整个视频的信息全部在文件最前边,数据都在中间,文件索引在最后。简直不能再坏了。你会发现他的封装结构里,整个视频的信息全部在文件最前边,数据都在中间,文件索引在最后。简直不能再坏了。
如果你最开始的这部分没有下载完毕,电脑根本不知道中间的数据块部分该如何处理。
如果你最后的这部分没有下载完毕,电脑根本不知道中间的数据块应该如何排列那个在前哪个在后,什么块是什么东西。
如果运气不佳可能下到99%你都在下载数据块,信息快索引块还没下完整。

MP4:
<img data-rawheight="351" data-rawwidth="632" src="https://i-blog.csdnimg.cn/blog_migrate/15a7f8ff6abfef36d6be669a0278498e.jpeg" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic2.zhimg.com/v2-d19a445f08b65aab5d0c8e05eaefcb79_r.jpg">文件视频内容部分被分成为了多个部分,组成一个个Fragment,这样的结构符合渐进式播放需求。(只要下载开头的file Type 和Metadata部分,后续收齐一个Fragment便可播放其中的mdatbox)文件视频内容部分被分成为了多个部分,组成一个个Fragment,这样的结构符合渐进式播放需求。(只要下载开头的file Type 和Metadata部分,后续收齐一个Fragment便可播放其中的mdatbox)

所以你会发现,在线播放时进度条不是整根都能拖动的,进度条被分成若干段。有些区域是已经下好的,可以直接播放,有些还没下载,需要缓冲。

正式开始前先对文件的几个重要部分宏观介绍一下,以便诸位在后续学习时心中有数:

1、  ftypbox,在文件的开始位置,描述的文件的版本、兼容协议等;

2、  moovbox,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak box。

        >>mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。

        >>trak中的一系列子box描述了每个媒体轨道的具体信息。

3、  moofbox,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

4、  mdatbox,实际媒体数据。我们最终解码播放的数据都在这里面。

5、  mfrabox,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。





https://www.zhihu.com/topic/19797079/hot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值