【问题标题】:Streaming video with videoview使用 videoview 流式传输视频
【发布时间】:2013-07-23 06:30:53
【问题描述】:

我下面的流式视频代码:

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

它有效。 但是如果 android 手机或平板不支持 URL 视频的格式。 它显示一个对话框,而不显示屏幕。 但它仍然以黑屏播放。 我想得到错误消息,并作为例外访问。 但是不知道怎么弄?

另一个问题是低速 wifi 可能导致流媒体崩溃。 wifi低速时如何查看是否等待?

【问题讨论】:

    标签: android android-videoview


    【解决方案1】:

    试试这个代码,它可以工作,

    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();
           }   
    
     }
    }
    

    【讨论】:

    • 对!另一种解决方案是注册监听器setOnErrorListener,(在 VideoView 对象上),它允许您实现回调 MediaPlayer.OnErrorListener,当播放或设置期间发生错误时将调用该回调。
    【解决方案2】:

    这取决于您在哪个 Android 版本上开发应用程序。有些设备不支持运行 .mp4 文件。通过Android Media support 了解更多信息。检查您是否可以播放任何 .3gp 文件。

    【讨论】:

      【解决方案3】:

      您不应该立即播放视频。将 OnPrepared 侦听器添加到视频视图并在其后开始播放视频。使用 MediaPlayer,您可以跟踪缓冲状态并在视频尚未下载时将其停止一段时间。请查看this 指南。

      【讨论】:

      • 当我使用 videoview 时,它在 logcat 中显示 03-19 15:02:48.314: V/VideoView(9255): OnBufferingUpdateListener: CurrentBufferPercentage = 100。如何获得价值?
      • 这就是为什么我建议你使用 MediaPlayer,你可以注册 OnBufferingUpdateListener 到它。但我认为您可以使用 videoView.getBufferPercentage() 从视频视图中获得相同的值
      【解决方案4】:

      尝试 Intent 以避免该错误。或将 try catch 放入您的块中。 VideoView 只能流式传输 3gp 视频,但我建议使用此代码流式传输您的视频

      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);
      }
      

      Click here to watch Android Video Streaming Tutorial

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 2016-09-24
        • 2016-01-15
        相关资源
        最近更新 更多