vlc-android-sdk - cannot view RTSP live video

匿名 (未验证) 提交于 2019-12-03 08:59:04

问题:

I've been working on an Android application that shows live streaming video via RTSP. Assuming I have a well-functioning RTSP server that passes h264 packets, and to view the stream we should connect to rtsp://1.2.3.4:5555/stream

So I tried to use the native MediaPlayer\VideoView, but no luck (the video was stuck after 2-3 seconds of playback, so I loaded mrmaffen's vlc-android-sdk (can be found here) and used the following code:

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

The problem is that I see a blank screen.

Keep in mind that when I put a RTSP link with audio stream only, it works fine.

Is someone familliar with this sdk and have an idea about this issue? Thanks in advance

回答1:

I play rtsp streaming with following code

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

When you get playing event, you need enable video track.

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

This may be helpful for you



回答2:

Try adding this option:

--rtsp-tcp 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!