danikula / danikula/AndroidVideoCache

Preloading only a part of videos

Open
#123 14 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
Java
Stars
5.5k
Forks
1.2k
PR merge metrics
No merged PRs in 30d

Description

Hi guys, I'm currently using this awesome library for my app.

Nowaday, I want to do preloading: while users is watching a video, I start downloading a part of each upcoming videos.

For example, my videos are about 12MB in size on average, I want to preload only 5MB of each video, so that users will not have to wait for loading.

```
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
URL url = new URL(videoUrl);
is = url.openStream();
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];

int lengthInByte;
int readByteCount = 0;
while ((lengthInByte = is.read(buffer)) != -1) {
readByteCount += lengthInByte;
fileOutputStream.write(buffer, 0, lengthInByte);
if (readByteCount >= MAX_FILE_SIZE_TO_PRELOAD_IN_BYTE) {
break;
}
}
```
The `videoUrl` here is the original one, not the one from `HttpProxyCacheServer.getProxyUrl(String)`
The `videoPath` is the same as the path that the library will use to storage the cache file, because I'm using the same `FileNameGenerator` to build up the path, with the `.download` postfix also.
I will stop downloading when the cached file length is bigger than the maximum size I want to cache.

Everything works just fine, the library will append to my preloaded file instead of downloading a new one.

Except that, each time I play a video, it seems that the MediaPlayer has to wait before the library can connect to the remote file, instead of getting access to the cached file immediately.

Is that right? If yes, anyway that I can customize to open the cached file and play the video immediately while the library continue downloading?

Thank you.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing HttpProxyCacheServer.getProxyUrl(String), the shared FileNameGenerator path, and the MediaPlayer interaction described in the issue. Reproduce playback with the partial .download cache and determine whether the existing cache flow supports immediate playback while downloading; done means a clearly supported behavior or documented limitation and usage path.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
mobile, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.