2012-03-19 7 views
4

Mon code ci-dessous pour le streaming vidéo:Streaming vidéo avec VideoView

VideoView vv = (VideoView)this.findViewById(R.id.screen_video); 
Uri uri = Uri.parse(URL); 
vv.setVideoURI(uri); 
vv.start(); 

Il fonctionne. Mais si le format de la vidéo URL ne prend pas en charge par téléphone ou tablette Android. Affiche une boîte de dialogue et ne pas afficher l'écran. Mais il continue à diffuser avec un écran noir. Je souhaite recevoir le message d'erreur et accéder en tant qu'exception. Mais je ne sais pas comment l'obtenir?

Un autre problème est que le streaming peut se bloquer en raison d'un wifi à basse vitesse. Comment le vérifier pour attendre pendant le wifi à basse vitesse?

Répondre

11

essayer ce code, ça marche,

public class PlayVideo extends Activity 
{ 


private String videoPath ="url"; 

private static ProgressDialog progressDialog; 
String videourl; 
    VideoView videoView ; 


protected void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.play_video); 

    videoView = (VideoView) findViewById(R.id.videoView); 


    progressDialog = ProgressDialog.show(PlayVideo.this, "", "Buffering video...", true); 
    progressDialog.setCancelable(true); 


     PlayVideo(); 

} 
private void PlayVideo() 
{ 
    try 
     {  
       getWindow().setFormat(PixelFormat.TRANSLUCENT); 
       MediaController mediaController = new MediaController(PlayVideo.this); 
       mediaController.setAnchorView(videoView);   

       Uri video = Uri.parse(videoPath);    
       videoView.setMediaController(mediaController); 
       videoView.setVideoURI(video); 
       videoView.requestFocus();    
       videoView.setOnPreparedListener(new OnPreparedListener() 
       { 

        public void onPrepared(MediaPlayer mp) 
        {     
         progressDialog.dismiss();  
         videoView.start(); 
        } 
       });   


      } 
     catch(Exception e) 
     { 
       progressDialog.dismiss(); 
       System.out.println("Video Play Error :"+e.toString()); 
       finish(); 
     } 

} 
} 
+1

Right! Une autre solution consiste à enregistrer l'écouteur 'setOnErrorListener', (sur l'objet VideoView) qui vous permet d'implémenter le rappel' MediaPlayer.OnErrorListener', qui sera invoqué lorsqu'une erreur survient pendant la lecture ou l'installation. – GVillani82

1

Vous ne devriez pas lire la vidéo instantanément. Ajoutez le programme d'écoute OnPrepared à la vue vidéo et démarrez la lecture de la vidéo après celle-ci. Avec MediaPlayer, vous pouvez garder une trace de l'état de mise en mémoire tampon et arrêter la vidéo pendant un certain temps lorsqu'elle n'est pas encore téléchargée. S'il vous plaît jeter un oeil à this guide.

+0

Alors que j'utilise videoview, il affiche 03-19 15: 02: 48.314: V/VideoView (9255): OnBufferingUpdateListener: CurrentBufferPercentage = 100 dans le logcat. Comment puis-je obtenir la valeur? – brian

+0

C'est pourquoi je vous ai suggéré d'utiliser MediaPlayer, vous pouvez y inscrire OnBufferingUpdateListener. Mais je pense que vous pouvez obtenir la même valeur à partir de la vue vidéo en utilisant videoView.getBufferPercentage() – Ruuhkis

2

Cela dépend de la version Android sur laquelle vous développez votre application. Certains périphériques ne prennent pas en charge l'exécution du fichier .mp4. Passez par Android Media support pour plus d'informations. Vérifiez si vous pouvez lire tous les fichiers .3gp ou non.

1

Essayez intention d'éviter cette erreur. ou mettre essayer d'attraper dans votre bloc. VideoView ne peut diffuser des vidéos 3gp, mais je recommande ce code pour diffuser votre vidéo

public void onCreate(Bundle savedInstanceState){ 
setContentView(R.layout.main); 
String videourl = "http://something.com/blah.mp4"; 
Uri uri = Uri.parse(videourl); 
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
intent.setDataAndType(uri, "video/mp4"); 
startActivity(intent); 
} 

Ou Click here to watch Android Video Streaming Tutorial.