Aller au contenu
Kricek

Lire un fichier video local hors du package

Recommended Posts

Coucou tout le monde!

Je cherche à lire une vidéo dans mon appui et cela fait 2jours que je fais du sur place. Je pense avoir tout essayé: avec une "VideoView", ou un "MediaPlayer", la video stockée en interne, ou sur la carte sd... A chaque fois j'arrive au même point "Désolé! Cette vidéo ne peut être lue."

Le problème ne vient pas de la vidéo car lorsque je la mets dans le répertoire "Raw" et que je l'appelle comme ça:

video.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/raw/Titre_De-Ma-Video"

Elle est lue.

J'ai même suivi le tuto à cet endroit et ça ne fonctionne pas non plus.

J'ai lu à certains endroits qu'on ne pouvait pas lire sur la carte interne (même avec "getFilesDir()") à moins d'être directement dans les ressources du projet ("/raw"). J'ai donc essayé sur a carte sd externe, ça ne change rien.

J'ai lu à d'autres endroits qu'on pouvait se servir d'un FileDescriptor, que le fichier soit en interne ou en externe, ça fonctionnerait... J'ai essayé, idem.

J'ai lu également qu'il était plutôt conseillé d'appeler le fichier à l'aide d'une URI... Idem

J'ai essayé en passant par une VideoView, c'est à dire l'implémentation simplifiée EXPRES pour ça... Idem

J'ai aussi essayé en passant par un MediaPlayer, un peu plus fastidieux et ça ne marche pas non plus.

J'ai essayé avec un MediaController ou sans, toujours pareil...

Là, j'avoue que je commence sérieusement à être un peu agacé...

Surtout pour l'histoire du tuto de Google... Si ça recopié, ça remarche pas, là, je vois plus... lil

Si quelqu'un pouvait me sortir de cette mouise, ça m'aiderait beaucoup....

Partager ce message


Lien à poster
Partager sur d’autres sites

Un ptit up au passage...

J'ai continué à faire des recherches sur le net. Je suis tombé sur un tuto qui expliquait que le fichier que l'on voulait lire devait avoir des droits de WORLD_READABLE (car la lecture d'une video utilise une appui externe et donc le fichier ne doit pas être réservé à l'application. J'ai modifié en fonction mais ça ne change rien du tout...

FileOutputStream fos2 = mContext.openFileOutput(Nom_du_Fichier, Context.MODE_WORLD_READABLE);

D'autres idées?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour.

Ca peut paraître (très) stupide comme suggestion mais c'est bien souvent les petites choses qu'on oublie qui nous plombent !

As-tu bien autorisé l'accès internet dans ton manifest ?

Sinon Je suis entrain d'essayer de lire une vidéo également, je te tiens au courant.

Edit : mince j'ai lu trop vite j'avais vu "setVideoUri" :( :S

Modifié par cyberalternative

Partager ce message


Lien à poster
Partager sur d’autres sites

Envoyez le path de la vidéo que vous essayez de charger... peut etre qu'il y a une erreur ds le path !?

Partager ce message


Lien à poster
Partager sur d’autres sites

Oki, pas de pb android par rapport aux videos sur sdcard :

public class VideoActivity extends Activity {
private String path = "";
private VideoView mVideoView;
@Override
public void onCreate(Bundle icicle) {
 super.onCreate(icicle);
 setContentView(R.layout.video);
 mVideoView = (VideoView) findViewById(R.id.video);
 File sdCardCustomFolder = new File(Environment.getExternalStorageDirectory(), "test");
 File videoFile = new File(sdCardCustomFolder, "exemple.mp4");
 path = videoFile.getPath();
 mVideoView.setVideoPath(path);
 mVideoView.setMediaController(new MediaController(this));
 mVideoView.requestFocus();
}
}

Sur mon device j'ai créé un repertoire "test" ds le répertoire "sdcard". J'y ai mis le fichier "exemple.mp4".

Coté xml j'ai juste une VideoView ds mon LinearLayout principal.

Quand on touche le rectangle de la video, ca affiche les controls de la video (play/volume/...), et je peux lancer la video...ce que je fais, et ca marche !

Modifié par Sylvain Duché

Partager ce message


Lien à poster
Partager sur d’autres sites

En utilisant setVideoURI(...) tu peux faire :

mVideoView.setVideoURI(Uri.parse(path));

ou

mVideoView.setVideoURI(Uri.fromFile(videoFile));

Partager ce message


Lien à poster
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.






×
×
  • Créer...