我一直在开发一个android应用程序,通过rtsp显示实时流媒体视频。
假设我有一个运行良好的rtsp服务器,它可以传递h264数据包,要查看流,我们应该连接到rtsp://1.2.3.4:5555/stream
因此,我尝试使用本机mediaplayer\videoview,但没有成功(视频在播放2-3秒后卡住,因此我加载了mrmaffen的vlc android sdk(可以找到here),并使用了以下代码:
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并且对这个问题有想法吗?
提前谢谢
最佳答案
我用以下代码播放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);
}
这可能对你有帮助
关于android - vlc-android-sdk - 无法查看RTSP直播视频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34633273/