天天看點

阿裡雲移動端播放器進階功能---邊播邊緩存

基本介紹

阿裡雲播放器提供了邊播邊緩存功能,主要可用于省流量(斷網可播)、加快二次起播速度、加快循環播放速度。如果開啟此功能,使用者在完整播放完一次視訊後,視訊将會被緩存到本地。再次播放的時候,如果本地緩存已經存在,則會直接播放本地緩存,避免走網絡流量。同時,本地視訊打開速度比網絡檔案打開要快,起播速度也會有提升。

https://www.atatech.org/articles/131370#1 接口使用

AliyunVodPlayer 提供了以下接口去配置此功能:

Android接口:
public void setPlayingCache(boolean enable, String saveDir, int maxDuration, long maxSize)
iOS 接口:
-(void) setPlayingCache:(BOOL)bEnabled saveDir:(NSString*)saveDir maxSize:(int64_t)maxSize maxDuration:(int)maxDuration;
           

這四個參數的含義如下:

參數 功能 備注
enable 是否開啟此功能。 當enable為false時,将關閉此功能。當enable為true的時候,不一定能夠緩存檔案。能否緩存,需要根據另外的三個參數決定。
saveDir 緩存檔案儲存的路徑。 當視訊能夠被緩存時,将會儲存到這個檔案夾下面。檔案名不是原始的檔案名。
maxDuration 單個檔案的最大時長,機關:秒。 如果某個檔案的時長超過此值,即使enable=true,也将不會被緩存。
maxSize 整個檔案夾緩存總大小的最大值,機關:MB。 如果檔案夾中檔案總大小将要超過此值,将會删掉最舊的檔案,直到有足夠的空間去緩存新的視訊檔案。

https://www.atatech.org/articles/131370#2 Android使用示例

AliyunVodPlayer  aliyunVodPlayer = new AliyunVodPlayer(this);
String sdDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test_save_cache";
aliyunVodPlayer.setPlayingCache(true, sdDir, 60 * 60 /*時長, s */, 300 /*大小,MB*/);
           

當完整播放完一次視訊後,将在設定的dir目錄中看到緩存的檔案,截圖如下:

阿裡雲移動端播放器進階功能---邊播邊緩存

https://www.atatech.org/articles/131370#3 iOS使用示例

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [pathArray objectAtIndex:0];
[_aliPlayer setPlayingCache:YES saveDir:docDir maxSize:3000 maxDuration:100000];
           

https://www.atatech.org/articles/131370#4 使用場景

有兩個比較實用的場景:

1. 節省流量:播放完緩存在本地後,如果再次播放視訊,則不需要耗費流量,可以大大節省使用者流量。對那些需要重複播放同一個視訊的場景比較有用。

2. 加快循環播放速度以及加快起播速度,如果視訊已經緩存在本地,則循環播放會從本地讀取視訊,而不是再次從網絡上讀取,這樣能夠加快循環播放的速度。比較适合短視訊場景。

3. 同時對長視訊不太建議使用邊播邊緩存的功能。

https://www.atatech.org/articles/131370#5 功能注意點

https://www.atatech.org/articles/131370#6 1.以下情況将不會被緩存

  1. 播放過程中拖拽(seek)。如果播放過程中有拖拽動作,此次視訊将不會被緩存。
  2. 沒有播放完就停止播放(stop)。播放中stop,導緻資料沒有完整被擷取,此次視訊将不會被緩存。
  3. 無法擷取到視訊檔案大小的。如果擷取不到視訊檔案的大小,将無法判斷是否超出maxSize,預設将不會被緩存。如果不判定視訊檔案大小,可以将參數MaxSize設定成-1,那麼播放器内部不會對緩存大小進行判定。 緩存功能隻有在:使用者完整的播放完一次視訊的時候才會有緩存檔案。

https://www.atatech.org/articles/131370#7 2.緩存的檔案名不可更改

緩存生成的檔案名是比對視訊的唯一标志。如果檔案名被修改,那麼下次播放将找不到對應的緩存檔案,将還會重新讀取網絡資料。

https://www.atatech.org/articles/131370#8 3.淘汰機制

如果設定的最大緩存大小是100M,此時緩存超過了你設定的最大空間後,則會把最早緩存下來的視訊進行删除,保證最新視訊能夠緩存下來。

繼續閱讀