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 实时视频的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thread 判断线程栈使用大小

RT-Thread 判断线程栈使用大小

RT-Thread 判断线程栈使用大小

RT-Thread 判断线程栈使用大小

文件中的错误(文件,“rt”):无法打开连接[重复]

访问限制:由于对所需库 ..\jre\lib\rt.jar 的限制,无法访问