聊聊视频分段下载的思路

很多优酷网的视频,都是被分拆成多段的。最近做项目,需要在线播放分段和下载视频。播放分段视频,其实就是常说的m3u的概念,把各个分段的地址做成一个播放列表,播放器把所有分段当作一个完整的视频。在播放过程中,让用户感觉不到整个视频有分段的痕迹。话说干嘛要把视频拆分成多段呢,网上有文章说是为了节省缓冲时的流量,避免不必要的缓冲。

 onStart() 
 onSuccess() 
 onFinish() 
 onProgress

在下载过程中,最重要的就是onProgress 方法,它跟踪下载进度。我们通常看到的下载进度条,下载速度,都是通过这个回调方法把数据展示到界面的。而现在我该如何做呢。例如我有18个文件分段。我在下载第一个文件的时候,我根本不知道总的文件多大。这一点倒好解决,我不可能请求18个分段的文件大小,而是让服务器从数据库返回的数据实体时就告诉我总体大小,如果没有,则粗略按照每个分段为同样大小来处理进度。在每个分段下载完成后,保存当前下载的总进度。在onProgress中,current指的是当前分段下载的字节数,count是当前分段的总字节数。所以计算进度时,需要加上已经下载完成的分段。每下载完一个分段,计算好下载进度保存下来,在onSuccess方法里,开启执行下一个分段,到最后一个分段执行完成后,才算整体下载完成。如果在onProgress里将进度准确显示出来,那下载时用户时感觉不到在下载多段视频的。

下载完成后,最好不要要将多段视频合并,因为文件在合并时容易出现错乱的现象,应该采取分段播放的思路。

这篇博客写于两年了,现在把它从eoe迁移到csdn上来,因为eoe的博客系统已经销声匿迹了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值