39 votes

Comment corriger l'erreur "Sorry, This video cannot be played" sur VideoView ?

J'ai un VideoView et je diffuse des vidéos à partir d'un serveur distant. La plupart du temps, la lecture des vidéos est très fluide. Mais parfois, il affiche un message d'erreur "Sorry, This video cannot be played". J'ai l'intuition que cela dépend plutôt des formats vidéo pris en charge. Cependant, je ne sais pas quels sont les formats pris en charge. Ma question est la suivante : "Comment puis-je éviter cette erreur (par exemple, empêcher le message d'erreur de s'afficher) ? J'utilise Android 2.2 pour ce projet. Tout conseil serait grandement apprécié :)

62voto

Femi Points 42054

Essayez d'utiliser setOnErrorListener La documentation dit Si aucun écouteur n'est spécifié, ou si l'écouteur a retourné faux, VideoView informera l'utilisateur de toute erreur. Je suppose donc que si vous en définissez un et que vous renvoyez true, l'erreur de l'utilisateur ne sera pas affichée.

8voto

ruxy Points 182

Le code que j'ai utilisé pour cela :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    vView = (VideoView) findViewById(R.id.videoView1);

    vSource = "android.resource://com.domain.android/"
            + R.raw.introductionportrait;
    vView.setVideoURI(Uri.parse(vSource));

    vView.setOnErrorListener(mOnErrorListener);
    vView.requestFocus();
    vView.start();
}

private OnErrorListener mOnErrorListener = new OnErrorListener() {

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // Your code goes here
        return true;
    }
};

4voto

wired00 Points 2951

Je préfère configurer les écouteurs de cette manière dans la méthode onCreate. J'espère que cela aidera quelqu'un

videoView.setOnErrorListener(new OnErrorListener () {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        Log.e(TAG, "Error playing video");
        return true;
    }
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X