vlc-android-sdk - не может просматривать живое видео RTSP

Я работал над приложением для Android, которое показывает потоковое видео в реальном времени через RTSP. Предполагая, что у меня есть хорошо функционирующий сервер RTSP, который передает пакеты h264, и для просмотра потока мы должны подключиться к rtsp: //1.2.3.4: 5555 / поток

Поэтому я попытался использовать собственный MediaPlayer \ VideoView, но безуспешно (видео зависало через 2-3 секунды воспроизведения, поэтому я загрузил mrmaffen vlc-android-sdk (можно найти здесь) и использовал следующий код:

            ArrayList<String> options = new ArrayList<String>();
            options.add("--no-drop-late-frames");
            options.add("--no-skip-frames");
            options.add("-vvv");
            videoVlc = new LibVLC(options);

            newVideoMediaPlayer = new org.videolan.libvlc.MediaPlayer(videoVlc);
            final IVLCVout vOut = newVideoMediaPlayer.getVLCVout();
            vOut.addCallback(this);
            vOut.setVideoView(videoView); //videoView is a pre-defined view which is part of the layout
            vOut.attachViews();
            newVideoMediaPlayer.setEventListener(this);

            Media videoMedia = new Media (videoVlc, Uri.parse(mVideoPath));
            newVideoMediaPlayer.setMedia(videoMedia);
            newVideoMediaPlayer.play();

Проблема в том, что я вижу пустой экран.

Имейте в виду, что когда я помещаю ссылку RTSP только с аудиопотоком, она работает нормально.

Кто-нибудь знаком с этим SDK и имеет представление об этой проблеме? заранее спасибо


person DanielY    schedule 06.01.2016    source источник
comment
Решили ли вы эту проблему с помощью vlc-android-sdk?   -  person Volodymyr Kulyk    schedule 30.01.2017


Ответы (2)


Попробуйте добавить эту опцию:

--rtsp-tcp
person HelloWorld    schedule 08.03.2017
comment
Спасибо, это работает! Даже VLC для Android из Google Play не может воспроизводить некоторые потоки (поскольку у него нет этой опции). В коде: options.add (- rtsp-tcp); новый LibVLC (контекст, параметры); - person Alexander Ukhov; 25.04.2017

Я играю в потоковую передачу rtsp со следующим кодом

try {
        Uri rtspUri=Uri.parse("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov");


        final MediaWrapper mw = new MediaWrapper(rtspUri);
        mw.removeFlags(MediaWrapper.MEDIA_FORCE_AUDIO);
        mw.addFlags(MediaWrapper.MEDIA_VIDEO);

        MediaWrapperListPlayer.getInstance().getMediaList().add(mw);

        VLCInstance.getMainMediaPlayer().setEventListener(this);
    VLCInstance.get().setOnHardwareAccelerationError(this);


    final IVLCVout vlcVout = VLCInstance.getMainMediaPlayer().getVLCVout();
    vlcVout.addCallback(this);
    vlcVout.setVideoView(mSurfaceView);
    vlcVout.attachViews();
    final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    final String aout = VLCOptions.getAout(pref);
    VLCInstance.getMainMediaPlayer().setAudioOutput(aout);
    MediaWrapperListPlayer.getInstance().playIndex(this, 0);

    } catch (Exception e) {
        Log.e(TAG, e.toString());
    }

Когда вы получаете событие воспроизведения, вам необходимо включить видеодорожку.

private void onPlaying() {
    stopLoadingAnimation();
    VLCInstance.getMainMediaPlayer().setVideoTrackEnabled(true);
}

Это может быть полезно для вас

person Osen Liu    schedule 11.01.2016