2016-09-09 13 views
0

У меня возникла странная проблема с моим Android-приложением. У меня есть локальный DVR (потоковый сервер), и я сделал приложение, чтобы получить прямой эфир из него с помощью библиотеки Vitamio.Ошибка Android Vitamio Mediaplayer (1, -1) при использовании серверов Public IP

public class LiveStreamingActivity extends Activity 
{ 
    private static VideoView mVideoView; 
    private ProgressDialog prodlg; 
    private static String path; 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     if (!LibsChecker.checkVitamioLibs(this)) 
      return; 
     setContentView(R.layout.activity_video_stream); 

     path="rtsp://user:[email protected]:port/cam/realmonitor?channel=1&subtype=0"; 

     prodlg=new ProgressDialog(this); 
     prodlg.setIcon(R.mipmap.ic_launcher); 
     prodlg.setMessage("Ju lutem prisni..."); 
     prodlg.show(); 

     mVideoView = (VideoView) findViewById(R.id.vitamio_videoView); 

     mVideoView.setVideoPath(path); 
     mVideoView.setVideoQuality(MediaPlayer.VIDEOQUALITY_HIGH); 
     mVideoView.setBufferSize(4096); 
     mVideoView.requestFocus(); 
     mVideoView.start(); 
     mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
     { 
      @Override 
      public void onPrepared(MediaPlayer mediaPlayer) 
      { 
       prodlg.dismiss(); 
       mediaPlayer.setPlaybackSpeed(1.0f); 
      } 
     }); 
     mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() 
     { 
      @Override 
      public boolean onError(MediaPlayer mp, int what, int extra) 
      { 
       Log.d("ERROR What", String.valueOf(what)); 
       Log.d("ERROR Extra", String.valueOf(extra)); 
       return false; 
      } 
     }); 
     mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() 
     { 
      @Override 
      public boolean onInfo(MediaPlayer mp, int what, int extra) 
      { 
       Log.d("INFO What", String.valueOf(what)); 
       Log.d("INFO Extra", String.valueOf(extra)); 
       return false; 
      } 
     }); 
    } 
} 

У меня есть все необходимые разрешения в манифесте.

Теперь, когда я пытаюсь использовать приведенный выше код с использованием IP-адресов серверов, он отлично работает. Когда я использую общедоступный IP-адрес серверов, он терпит неудачу, давая ошибку (1, -1), говоря «Извините, это видео не может играть ». Также можно получить доступ к серверу удаленно, попробовать другие приложения для потоковой передачи IP-камеры, а также VLC-плеер, и он работает нормально. За исключением VLC Из того, что я видел, только мое приложение не может открыть его удаленно. Почему это?

Я попытался открыть другие потоки из Интернета, и они отлично работают.

LogCat также показывает:

[RTSP @ 0x6125e020] метод PAUSE не удалось: 455 Метод не действует в этом государственный E/Vitamio [4.2.1] [Player]: av_find_stream_info: Операция не разрешается: -1

Я не могу понять, если проблема с приложением или сети ... Если кто-то может помочь, было бы весьма признателен!

ответ

0

Это может быть что-то просто, как вы используете тот же WiFi, что и DVR. Вы упомянули

using the servers private IP, it works perfectly fine

Все, если не большинство DVR не может быть просмотрен с помощью публичного IP в соответствии с той же Wi-Fi на Android/IOS