2015-08-26 109 views
0

我想流在RTSP实时输入这样:Android的实时视频流不播放

     String uri = "rtsp://54.213.167.253:5544/63a1203d-4e12-438e-86ec-f447fa90cfd7"; 
         Uri uri_add = Uri.withAppendedPath(MediaStore.Video.Media.INTERNAL_CONTENT_URI, "1"); 
         videoView.setVideoURI(uri_add.parse(uri)); 
         mediaController = new MediaController(_context); 
         videoView.setMediaController(mediaController); 
         videoView.requestFocus(); 
         videoView.start(); 

这个工程上的HTC,索尼和LG装置了我与测试,但不工作在Galaxy S6或任何三星设备上。我研究了编码兼容性,h.264是我的流编码的,这应该适用于我拥有的所有设备。我在这些设备上运行Android v。5.0.2和5.1.1,并且软件之间没有关联。也就是说,运行5.0.2的GalaxyS6不能播放视频,而运行5.0.2的HTC正在播放视频。我完全丧失了可能导致我无法播放视频的原因。

我已阅读所有关于流式传输实时视频的文章和文章,并试图在我的代码中实现它们,但是我每次都遇到相同的问题。我非常肯定代码没有问题,否则它在任何设备上都不起作用。任何人有任何想法可能会导致这一点,为什么?

+0

浏览器问题可能吗?你有没有在多个浏览器上尝试过? – Actiwitty

回答

0

这个问题似乎在少数三星设备上很常见。你检查了Logcat显示的内容吗?

我与Galaxy Tab 4有同样的问题,我最终使用Vitamio's库进行视频流。它现在还没有被支持,但很容易使用和基本定制

0

使用此类。这也在三星设备上运行。

private ProgressDialog progressDialog; 
    VideoView videoView; 
    private myAsync sync; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 

     String videourl = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"; 
     videoView = (VideoView) findViewById(R.id.video_view); 
     progressDialog = ProgressDialog.show(CustomizeProgressDialogActivity.this, "", 
       "Buffering video...", true); 
     progressDialog.setCancelable(false); 
     // progressDialog.dismiss(); 
     MediaController mediaController = new MediaController(CustomizeProgressDialogActivity.this); 
     mediaController.setAnchorView(videoView); 

     Uri video = Uri.parse(videourl);// insert video url 
     videoView.setMediaController(mediaController); 

     videoView.setVideoURI(video); 
     videoView.requestFocus(); 

     sync = new myAsync(); 
     sync.execute(); 
     // PlayVideo(); 
    } 


    private class myAsync extends AsyncTask<Void, Integer, Void> { 

     int duration = 0; 
     int current = 0; 

     @Override 
     protected Void doInBackground(Void... params) { 

      videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

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

      do { 


       current = videoView.getCurrentPosition(); 
       System.out.println("duration - " + duration + " current- " 
         + current); 



       if (sync.isCancelled()) 
        break; 

      } 

      while (current != duration || current == 0); 

      return null; 
     } 

    } 
+0

你可以显示你的xml文件吗? –