web-dev-qa-db-fra.com

comment jouer la vidéo de l'URL

Je suis débutant en développement Android et j'essaie de lire une vidéo à partir de link. Mais c'est donner l'erreur "sorry,we can't play this video". J'ai essayé beaucoup de liens, mais pour tous les liens, ils affichent la même erreur.

Mon code est le suivant 

public class VideoDemo extends Activity {

        private static final String path ="http://demo.digi-corp.com/S2LWebservice/Resources/SampleVideo.mp4";
 private VideoView video;
 private MediaController ctlr;
 @Override
 public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            getWindow().setFormat(PixelFormat.TRANSLUCENT);
            setContentView(R.layout.videoview);

            video = (VideoView) findViewById(R.id.video);
            video.setVideoPath(path);

            ctlr = new MediaController(this);
            ctlr.setMediaPlayer(video);
            video.setMediaController(ctlr);
            video.requestFocus();
     }
}

Logcat affiche le message d'erreur suivant:

04-12 15:04:54.245: ERROR/PlayerDriver(554): HandleErrorEvent: PVMFErrTimeout
35
priyanka

Cela a quelque chose à voir avec votre lien et votre contenu. Essayez les deux liens suivants:

    String path="http://www.ted.com/talks/download/video/8584/talk/761";
    String path1="http://commonsware.com/misc/test2.3gp";

    Uri uri=Uri.parse(path1);

    VideoView video=(VideoView)findViewById(R.id.VideoView01);
    video.setVideoURI(uri);
    video.start();

Commencez par «path1», il s’agit d’un petit flux vidéo léger, puis essayez le «path», il a une résolution plus élevée que «path1», une résolution parfaite pour le téléphone mobile.

42
Win Myo Htet

Essaye ça:

String LINK = "type_here_the_link";
setContentView(R.layout.mediaplayer);
VideoView videoView = (VideoView) findViewById(R.id.video);
MediaController mc = new MediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
Uri video = Uri.parse(LINK);
videoView.setMediaController(mc);
videoView.setVideoURI(video);
videoView.start();
6
gtsiolis
pDialog = new ProgressDialog(this);

    // Set progressbar message
    pDialog.setMessage("Buffering...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    // Show progressbar
    pDialog.show();

    try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(this);
        mediacontroller.setAnchorView(mVideoView);      

        Uri videoUri = Uri.parse(videoUrl);
        mVideoView.setMediaController(mediacontroller);
        mVideoView.setVideoURI(videoUri);

    } catch (Exception e) {

        e.printStackTrace();
    }

    mVideoView.requestFocus();
    mVideoView.setOnPreparedListener(new OnPreparedListener() {
        // Close the progress bar and play the video
        public void onPrepared(MediaPlayer mp) {
            pDialog.dismiss();
            mVideoView.start();
        }
    });
    mVideoView.setOnCompletionListener(new OnCompletionListener() {

        public void onCompletion(MediaPlayer mp) {
            if (pDialog.isShowing()) {
                pDialog.dismiss();
            }
            finish();               
        }
    });
6
Vaishali Sutariya

Vous pouvez le faire en utilisant FullscreenVideoView class. C'est un petit projet de bibliothèque. Son dialogue de progression vidéo est intégré.

compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.0'

votre VideoView XML est comme ça

<com.github.rtoshiro.view.video.FullscreenVideoLayout
        Android:id="@+id/videoview"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" />

Dans votre activité, initialisez-le de cette manière:

    FullscreenVideoLayout videoLayout;

videoLayout = (FullscreenVideoLayout) findViewById(R.id.videoview);
        videoLayout.setActivity(this);

        Uri videoUri = Uri.parse("YOUR_VIDEO_URL");
        try {
            videoLayout.setVideoURI(videoUri);

        } catch (IOException e) {
            e.printStackTrace();
        }

C'est tout. Bonne codage :)

Si vous voulez en savoir plus, visitez ici

Edit: Le chemin de dégradé a été mis à jour. compiler maintenant

compile 'com.github.rtoshiro.fullscreenvideoview:fullscreenvideoview:1.1.2'
5
Md. Sajedul Karim

Je me suis aussi retrouvé coincé avec ce problème. J'ai reçu une réponse correcte du serveur, mais je ne pouvais pas lire la vidéo. Après longtemps, j'ai trouvé une solution ici . Peut-être qu’à l’avenir ce lien sera invalide. Alors, voici mon code correct 

    Uri video = Uri.parse("Your link should be in this place "); 
    mVideoView.setVideoURI(video); 

   mVideoView.setZOrderOnTop(true); //Very important line, add it to Your code
    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
        @Override 
        public void onPrepared(MediaPlayer mediaPlayer) {
  // here write another part of code, which provides starting the video
  }}
1
user7856586

veuillez vérifier ce lien: http://developer.Android.com/guide/appendix/media-formats.html

videoview ne supporte pas certains codec.

je vous ai suggéré d'utiliser mediaplayer, quand vous obtenez "désolé, impossible de lire une vidéo"

1
Adnan Abdollah Zaki

Essayez Exoplayer2

https://github.com/google/ExoPlayer

C'est hautement personnalisable

    private void initializePlayer() {
         player = ExoPlayerFactory.newSimpleInstance(
             new DefaultRenderersFactory(this),
             new DefaultTrackSelector(), new DefaultLoadControl());

         playerView.setPlayer(player);

         player.setPlayWhenReady(playWhenReady);
         player.seekTo(currentWindow, playbackPosition);

Uri uri = Uri.parse(getString(R.string.media_url_mp3));
     MediaSource mediaSource = buildMediaSource(uri);
     player.prepare(mediaSource, true, false);
    }

private MediaSource buildMediaSource(Uri uri) {
  return new ExtractorMediaSource.Factory(
      new DefaultHttpDataSourceFactory("exoplayer-codelab")).
      createMediaSource(uri);
}

@Override
public void onStart() {
 super.onStart();
 if (Util.SDK_INT > 23) {
   initializePlayer();
 }
}

Vérifiez cette URL pour plus de détails

https://codelabs.developers.google.com/codelabs/exoplayer-intro/#2

0
Nudge