關於增加小視頻(類抖音,快手,微視)模塊的總結

簡介

項目需要在app內添加很火的小視頻,比如抖音,微視,快手等吸引用戶,提高留存,做的效果也是跟上面的精品一樣,可以上下切換小視頻,可以點贊,關注,小紅心特效等等

遇到的問題

1.上下滑動控件遇到的坑
2.上下切換使用的框架調研
3.切換小視頻無法秒播,延遲高,體驗差
4.ijk無法實現真正預加載,嘗試了多種方案

實現的方式

1.上下滑動控件遇到的坑
最開始使用了阿里自定義控件,但是具有嚴重的適配問題,強烈建議不要使用,已經有好幾年不維護了,我這裏推薦使用VerticalViewPager,查看源碼對比ViewPager可以發現是在ViewPager的源碼上做了改動,經測試適配性很好

2.上下切換使用的框架調研
網上有很多例子,使用RecycleView+Fragment實現上下切換進行播放,但是這個方案感覺還不太成熟,真正在你使用該方案實現的過程中會有很多人,並且抖音也沒有使用該方案,精品使用的是ViewPager+fragment,所以使用了ViewPager+fragment

3.切換小視頻無法秒播,延遲高,體驗差
小視頻播放必須要做到秒播,要不在體驗上就會很差,切換一個視頻,卡一秒或者好幾秒這個無法接受的,所以必須要做到秒播,要實現秒播,最優的方案就是預加載,這裏的預加載不是指對同一個視頻邊對播放邊下載,類似於緩衝條,這裏的預加載是指預加載另外一個視頻。其實只要注意觀察,抖音,快手,微視等app,在他們播放一個視頻的時候,從手機頂部的網速可以看到,下載流量瞬間到達幾M每秒,這其實就是預加載下一個短視頻,加載完了,做暫停處理而已。等到用戶滑動到當前視頻的時候,直接進行播放,避免網絡請求的延遲等各種問題,從而實現秒播。

4.ijk無法實現真正預加載,嘗試了多種方案
這裏說一下我的解決方案:
最開始嘗試的方案是
第一種方案:使用ijk進行播放,通過各種個樣的參數調優,比如減少網絡探測時間等等
能設置的參數都設置了,但是無法做到秒播,ijk無法做到預加載另外一個視頻,即ijk無法同時播放兩個不同的視頻,在開發時間不允許的情況下直接放棄該方案(好想有個時間去改一下C源碼,嗚嗚)

第二方案:
使用七牛的播放sdk,該方案跟ijk效果一樣,沒有太多的改變,無法實現秒播,也無法預加載另外一個視頻(備註這個接觸不多,也有可能是誤判)

第三方案:
使用了阿里播放sdk,並且使用視頻預加載,短視頻本身也存放在阿里雲上面,並且阿里播放sdk也支持了預加載的功能,所以最終使用了該方案

總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章