基本介紹
阿裡雲播放器提供了邊播邊緩存功能,主要可用于省流量(斷網可播)、加快二次起播速度、加快循環播放速度。如果開啟此功能,使用者在完整播放完一次視訊後,視訊将會被緩存到本地。再次播放的時候,如果本地緩存已經存在,則會直接播放本地緩存,避免走網絡流量。同時,本地視訊打開速度比網絡檔案打開要快,起播速度也會有提升。
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.以下情況将不會被緩存
- 播放過程中拖拽(seek)。如果播放過程中有拖拽動作,此次視訊将不會被緩存。
- 沒有播放完就停止播放(stop)。播放中stop,導緻資料沒有完整被擷取,此次視訊将不會被緩存。
- 無法擷取到視訊檔案大小的。如果擷取不到視訊檔案的大小,将無法判斷是否超出maxSize,預設将不會被緩存。如果不判定視訊檔案大小,可以将參數MaxSize設定成-1,那麼播放器内部不會對緩存大小進行判定。 緩存功能隻有在:使用者完整的播放完一次視訊的時候才會有緩存檔案。
https://www.atatech.org/articles/131370#7 2.緩存的檔案名不可更改
緩存生成的檔案名是比對視訊的唯一标志。如果檔案名被修改,那麼下次播放将找不到對應的緩存檔案,将還會重新讀取網絡資料。
https://www.atatech.org/articles/131370#8 3.淘汰機制
如果設定的最大緩存大小是100M,此時緩存超過了你設定的最大空間後,則會把最早緩存下來的視訊進行删除,保證最新視訊能夠緩存下來。