danikula / danikula/AndroidVideoCache

Preloading only a part of videos

Ouverte
#123 14 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
question
Langage dominant
Java
Étoiles
5.5k
Forks
1.2k
Métriques de merge des PR
Aucune PR mergée en 30 j

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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par suivre HttpProxyCacheServer.getProxyUrl(String), le chemin de FileNameGenerator partagé et l’interaction avec MediaPlayer décrite dans l’issue. Reproduisez la lecture avec le cache .download partiel et déterminez si le flux de cache existant prend en charge la lecture immédiate pendant le téléchargement ; le travail est terminé lorsqu’un comportement clairement pris en charge ou une limitation et un chemin d’utilisation documentés sont établis.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
android, java
Domaine
mobile, performance
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.