2012-08-15 89 views
3

我正在开发android应用程序来播放直播视频流。他们在OS 2.2和2.3上工作正常。给我们的新设备是OS 4.0.4,每当我收到错误时;介质错误在onErrorListener()方法中未知。这里是我的代码视频在Android 2.2和2.3上播放,但不在Android 4.0.4上播放

mVideoView = new VideoView(this);// (VideoView) 
    mVideoView.setId(id_mVideoview); 

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
      LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 

    mVideoView.setLayoutParams(lp); 

    mVideoView.setOnKeyListener(this); 
    mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { 

     public boolean onError(MediaPlayer arg0, int arg1, int arg2) { 
      // TODO Auto-generated method stub 
      mHandler.removeCallbacksAndMessages(null); 
      Toast.makeText(
        streamplayer_filmstrip.this," Video cannot be  played", Toast.LENGTH_LONG) 
        .show(); 
      try { 
       Thread.sleep(3000); 
       Go_Back(); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       Log.d("VidError", 
         "Exception :: " + e.toString() + e.getMessage()); 
       Toast.makeText(streamplayer_filmstrip.this, 
         "On Error Ex ::" + e.toString(), Toast.LENGTH_LONG) 
         .show(); 
       e.printStackTrace(); 
      } 
      return true; 
     } 
    }); 

    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

     public void onPrepared(MediaPlayer arg0) { 
        // doneSomething   
        }); 


     mVideoView.setVideoURI(Uri.parse(getStreamURL("some_url_for_live_stream"))); 

     mVideoView.postInvalidateDelayed(100); 
     mVideoView.setMediaController(null); 
     if (mView1.getVisibility() == View.GONE) 
      mVideoView.requestFocus(); 
     else { 
      ll_PopUp.bringToFront(); 
      mView1.requestFocus(); 
     } 
     mVideoView.start(); 

任何帮助,高度赞赏

回答

0

处理的影片是根据设备类型的Android不同,你必须提到您的设备和流您的大概类型使用,RTSP流由android支持,对于其他版本您的设备可能会或可能不支持流类型。

+0

谢谢vaibhav。我们正在测试android/google电视盒。这个问题非常令人害怕。在OS 2.2和2.3 rtsp流的框上播放正常,但在stopPlayback()上停止系统。在OS 4.0上,流运行时使用http,而不停止stopPlayback()上的系统。但是他们今天不是在玩。你有什么想法如何处理支持问题? – samreen 2012-08-27 10:45:20

+0

一种方法是使用您自己的编解码器,这是非常昂贵的,当我开发Android流媒体问题在每个设备上都有所不同,从我记得我们使用闪存到最终需要对服务器进行一些更改,除了使应用程序无法使用非闪存设备。 – 2012-08-27 15:22:12

+0

我的确认为它与流的编码有关。如果你尝试链接可用[这里](http://stackoverflow.com/questions/12131408/android-videoview-live-tv-stream-hls),你会看到它顺利运行(至少在我得到的设备上)。 – samreen 2012-08-28 06:11:50