聊聊视频分段下载的思路
很多優(yōu)酷網(wǎng)的視頻,都是被分拆成多段的。最近做項(xiàng)目,需要在線播放分段和下載視頻。播放分段視頻,其實(shí)就是常說的m3u的概念,把各個(gè)分段的地址做成一個(gè)播放列表,播放器把所有分段當(dāng)作一個(gè)完整的視頻。在播放過程中,讓用戶感覺不到整個(gè)視頻有分段的痕跡。話說干嘛要把視頻拆分成多段呢,網(wǎng)上有文章說是為了節(jié)省緩沖時(shí)的流量,避免不必要的緩沖。
onStart() onSuccess() onFinish() onProgress在下載過程中,最重要的就是onProgress 方法,它跟蹤下載進(jìn)度。我們通常看到的下載進(jìn)度條,下載速度,都是通過這個(gè)回調(diào)方法把數(shù)據(jù)展示到界面的。而現(xiàn)在我該如何做呢。例如我有18個(gè)文件分段。我在下載第一個(gè)文件的時(shí)候,我根本不知道總的文件多大。這一點(diǎn)倒好解決,我不可能請(qǐng)求18個(gè)分段的文件大小,而是讓服務(wù)器從數(shù)據(jù)庫(kù)返回的數(shù)據(jù)實(shí)體時(shí)就告訴我總體大小,如果沒有,則粗略按照每個(gè)分段為同樣大小來處理進(jìn)度。在每個(gè)分段下載完成后,保存當(dāng)前下載的總進(jìn)度。在onProgress中,current指的是當(dāng)前分段下載的字節(jié)數(shù),count是當(dāng)前分段的總字節(jié)數(shù)。所以計(jì)算進(jìn)度時(shí),需要加上已經(jīng)下載完成的分段。每下載完一個(gè)分段,計(jì)算好下載進(jìn)度保存下來,在onSuccess方法里,開啟執(zhí)行下一個(gè)分段,到最后一個(gè)分段執(zhí)行完成后,才算整體下載完成。如果在onProgress里將進(jìn)度準(zhǔn)確顯示出來,那下載時(shí)用戶時(shí)感覺不到在下載多段視頻的。
下載完成后,最好不要要將多段視頻合并,因?yàn)槲募诤喜r(shí)容易出現(xiàn)錯(cuò)亂的現(xiàn)象,應(yīng)該采取分段播放的思路。
這篇博客寫于兩年了,現(xiàn)在把它從eoe遷移到csdn上來,因?yàn)閑oe的博客系統(tǒng)已經(jīng)銷聲匿跡了。
總結(jié)
以上是生活随笔為你收集整理的聊聊视频分段下载的思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据分析-矩阵模型:产品定位问题的数据化
- 下一篇: 已知长方体相邻三个面的面积,求长方形的周