成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS三方件開發指南(16)-VideoCache 視頻緩存

開發 OpenHarmony
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[392169]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

引言

對于視頻播放器這個app大家都不陌生,在我們日常生活中隨處可見,但對于用戶而言,最重要的就是如何能節約流量,使用簡單,觀看視頻流暢等體驗。對于Android VideoCache 在各大網站的學習文檔、教程已經很多,而且層出不窮,但是對于鴻蒙來講,還是一個新的領域,因此,鴻蒙版的VideoCache 順勢而為,華麗的誕生了。

功能介紹

鴻蒙VideoCache視頻緩存組件,主要功能包括:視頻緩沖,在線播放視頻,邊下載邊緩存,緩沖進度和播放進度同時進行,拖動播放,橫豎屏切換,音量調節等主要功能。模擬機效果圖如下:

1.豎屏狀態:

2.橫屏狀態 

接下來得內容就是重中之重,對于開發者來講,如何簡單并且快速的使用該VideoCache視頻緩存組件,這才是開發者最關注的問題。下面則詳細介紹VideoCache的使用以及開發指南。

VideoCache使用指南

Ø 新建工程, 添加組件Har包依賴

在應用模塊中添加HAR,只需要將videocachelibrary-debug.har復制到entry\libs目錄下即可

Ø 修改配置文件 

1. 在entry下面的build.gradle添加library 的依賴,如圖所示:

1. 修改代碼中的配置: 

a. 在基類中實例化代理服務,核心代碼如下:

  1. httpProxyCacheServer = 
  2.                 new HttpProxyCacheServer.Builder(theApplication).headerInjector(new UserAgentHeadersInjector()) 
  3.                 .maxCacheSize(1024 * 1024 * 1024)// 1 Gb for cache 
  4.                 .singleFileBandwidth(600)//單位KB,https需要1.5倍左右 
  5.                 .build(); 

b.在使用的地方初始化播放器,并調用代理服務將新生成的路徑傳入播放器,代碼如下:

  1. proxyUrl = BaseSlice.getProxy().getProxyUrl("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"); 
  2.     BaseSlice.getProxy().registerCacheListener(mCacheListener, proxyUrl);//緩存監聽 
  3.     playerVideo = new PlayerVideo(this, proxyUrl, this, layout); 
  4.     playerVideo.setDisplayMath(0, 1000); 

c.其他相關設置方法,代碼如下:

  1. * 設置播放器的寬高 
  2.  dependentLayout.setWidth(width); 
  3.      dependentLayout.setHeight(height); 
  4. 或者: 
  5. dependentLayout.setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT); 
  6.         dependentLayout.setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT); 
  7.      
  8.  * 設置播放器的橫豎屏 
  9. //橫屏 
  10. abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.LANDSCAPE); 
  11. //豎屏 
  12. abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.PORTRAIT); 
  13. //系統判斷 
  14. abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.UNSPECIFIED); 
  15. //跟隨棧中應用 
  16. abilitySlice.getAbility().setDisplayOrientation(AbilityInfo.DisplayOrientation.FOLLOWRECENT); 
  17.  
  18.  
  19.  * 初始化播放器 
  20. player = new Player(context); 
  21.     surfaceProvider.pinToZTop(false); 
  22.     java.util.Optional<ohos.agp.graphics.SurfaceOps> optional = surfaceProvider.getSurfaceOps(); 
  23.     SurfaceOps surfaceOps = optional.get(); 
  24.     surfaceOps.addCallback(new VideoSurfaceCallback(surfaceOps, loadUrl, 
  25.             player, this 
  26.     )); 
  27.  
  28.  * 播放方法 
  29.  player.play(); 
  30.  
  31.  * 暫停播放方法 
  32.  player.pause(); 
  33. 1. 

VideoCache開發指南

在上述中,已經大概說了VideoCache 的功能點,視頻緩沖,在線播放視頻,邊下載邊緩存,緩沖進度和播放進度同時進行,拖動播放,橫豎屏切換,音量調節等主要功能,接下來一 一說明主要實現方法。

在視頻播放器中,最常見的就是緩沖進度條,進度條用戶可以很直觀的看到目前已經緩沖的視頻有多少,緩沖了多長時間,進度條設置代碼如下:

progressBar.setMaxValue(100);

progressBar.setMinValue(0);

progressBar.setProgressValue(cacheProgress);

通過根據已經緩沖的字節,即可計算出cacheProgress

MaxValue 值不是固定的100,也可以按照視頻的時長、字節等設置,然后計算百分比即可,根據具體需求設計。

MinValue設置progress 的起始點,最初的起始點肯定是0,但是當視頻在播放中途,暫停,在開始的時候,則需要設置為暫停時的值,這樣不至于又回到0來觀看視頻。

最后,既然是視頻緩存組件,那么重中之重就是如何緩存,接下來重點介紹: 

VideoCache主要通過代理策略將網絡請求代理到本地服務,本地在決定是從本地緩存拿數據還是發起網絡請求,如果發起網絡請求就先將數據寫入緩存,再從本地提供視頻數據給視頻播放器,參考下圖:

這樣就達到了邊播放邊緩存的策略。

具體步驟如下: 

1.在項目的基類初始化一個全局的代理服務HttpProxyCacheServer,

2.生成緩存文件名,默認是使用的 MD5 方式生成 key,考慮到一些業務邏輯,我們也可以繼承一個 FileNameGenerator 來實現自己的策略,具體代碼如下:

3.本地代理實現策略,首先是構造一個本地127.0.0.1的ServerSocker,隨機分配了一個端口,然后啟動一個線程去執行WaitRequestsRunnable,在這里面執行 waitForRequest,通過 accept() 方法監聽這個服務器 socket 的入站連接,accept() 方法會一直阻塞,直到有一個客戶端嘗試建立連接。

1. FileCache類 

類中規定了緩存文件的命名格式(后加.download)和存儲的路徑,完成了緩存文件的創建。

2. Files類

此類是對JAVA中原有的File類的封裝,原File類僅可處理一個文件,Files類可同時對多個文件進行處理。 

如下代碼中,getLruListFiles()方法的參數是一個directory,在方法中對directory(文件夾路徑)下的所有文件進行拆分,返回了一個File參數類型的List列表,后續可對列表中的各個File文件進行處理。

3. LruDiskUsage類 

此類主要用于控制緩存文件的大小,它與Videocache平行開了一個線程,實時記錄緩存文件的數量、大小、存儲空間等,超過預設的閾值時,執行特定的優化操作。

4. Md5FileNameGenerator類 

此類實現了為輸入文件路徑,生成對應的MD5值的功能。MD5值是一種被"壓縮"的保密格式,可以確保信息完整傳輸。

5. TotalCountLruDiskUsage類、TotalSizeLruDiskUsage類和UnlimitedDiskUsage類

LruDiskUsage類是標題中前兩個類的父類,同時控制緩存文件的大小和數量,需要判斷當前緩存文件的(總大小 & 總數量)未超過閾值時,才會緩存新的文件。 TotalCountLruDiskUsage類和TotalSizeLruDiskUsage類分別只對緩存文件總數量或者緩存文件總大小進行限制,滿足一個條件便可以緩存新的文件。

TotalCountLruDiskUsage類和TotalSizeLruDiskUsage類各有兩個方法:一個方法用于設定緩存文件的閾值;一個方法用于判斷當前緩存數據是否超過了設定的閾值。 

當不需要進行磁盤的緩存限制時使用UnlimitedDiskUsage類,其本身是一個空的類,不對緩存文件的數量和大小做任何限制。

更多原創,請關注"軟通動力HarmonyOS學院https://harmonyos.51cto.com/column/30

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-03-01 09:48:24

鴻蒙HarmonyOS應用開發

2021-02-24 15:22:47

鴻蒙HarmonyOS應用開發

2021-02-04 13:06:38

鴻蒙HarmonyOS應用開發

2021-01-13 09:40:31

鴻蒙HarmonyOS開發

2021-04-16 09:28:18

鴻蒙HarmonyOS應用

2021-06-28 14:48:03

鴻蒙HarmonyOS應用

2021-01-18 09:52:20

鴻蒙HarmonyOS開發

2021-02-26 14:15:27

鴻蒙HarmonyOS應用開發

2021-02-04 09:45:19

鴻蒙HarmonyOS應用開發

2021-01-21 13:21:18

鴻蒙HarmonyOSPhotoview組件

2021-01-12 12:04:40

鴻蒙HarmonyOS應用開發

2021-01-20 09:54:56

鴻蒙HarmonyOS開發

2021-05-12 15:17:39

鴻蒙HarmonyOS應用

2021-03-31 09:50:25

鴻蒙HarmonyOS應用開發

2021-03-24 09:30:49

鴻蒙HarmonyOS應用

2021-03-01 14:01:41

鴻蒙HarmonyOS應用開發

2021-01-22 17:33:03

鴻蒙HarmonyOS應用開發

2021-03-19 17:42:01

鴻蒙HarmonyOS應用開發

2021-04-20 09:42:20

鴻蒙HarmonyOS應用開發

2023-02-07 15:43:13

三方庫適配鴻蒙
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二 | 色综合久久天天综合网 | 91精品国产色综合久久 | 免费在线一区二区 | 91精品导航 | 精品真实国产乱文在线 | 国产精品久久久久久久免费大片 | 亚洲色欧美另类 | 日韩精品a在线观看图片 | 日韩精品久久一区二区三区 | 亚洲欧美久久 | 亚洲欧美日韩精品久久亚洲区 | 一二三区av | 一区二区三区四区在线 | 欧美成人一级 | 久久99精品国产麻豆婷婷 | 成人三级av | 久产久精国产品 | 99久久精品免费看国产免费软件 | 国产精品一区二 | 人人爽人人草 | 国产精品一区二区在线 | 国产精品久久av | xnxx 日本免费 | 久久精品国产一区二区三区 | 九一精品| 成人免费视频网站在线看 | 久久在线| 日韩一区二区在线视频 | 成人污污视频 | 色视频网站在线观看 | 91精品国产777在线观看 | 欧洲一区二区三区 | 欧美视频福利 | 一区二区三区av夏目彩春 | 亚洲精品乱码8久久久久久日本 | 综合久久综合久久 | 欧美成人激情 | 欧美极品视频在线观看 | 欧美日韩国产精品一区 | 中文字幕在线观看一区 |