vlc-android-sdk - 无法查看 RTSP 实时视频
Posted
技术标签:
【中文标题】vlc-android-sdk - 无法查看 RTSP 实时视频【英文标题】:vlc-android-sdk - cannot view RTSP live video 【发布时间】:2016-01-06 12:33:16 【问题描述】:我一直在开发一个通过 RTSP 显示实时流媒体视频的 android 应用程序。 假设我有一个运行良好的 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 并对此问题有所了解? 提前致谢
【问题讨论】:
你用vlc-android-sdk解决了这个问题吗? 【参考方案1】:尝试添加此选项:
--rtsp-tcp
【讨论】:
谢谢,成功了!即使是来自 Google Play 的 VLC for Android 也无法播放某些流(因为它没有此选项)。在代码中:options.add("--rtsp-tcp");新的 LibVLC(上下文,选项);【参考方案2】:我使用以下代码播放 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);
这可能对你有帮助
【讨论】:
以上是关于vlc-android-sdk - 无法查看 RTSP 实时视频的主要内容,如果未能解决你的问题,请参考以下文章