首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vlc-android-sdk -无法观看RTSP直播

vlc-android-sdk -无法观看RTSP直播
EN

Stack Overflow用户
提问于 2016-01-06 20:33:16
回答 2查看 4.9K关注 0票数 4

我一直在开发一个Android应用程序,可以通过RTSP显示实时流媒体视频。假设我有一个运行良好的RTSP服务器,它传递h264数据包,要查看流,我们应该连接到rtsp://1.2.3.4:5555/stream

所以我尝试使用原生的MediaPlayer\VideoView,但没有运气(视频在播放2-3秒后就卡住了,所以我加载了mrmaffen的vlc-android-sdk (可以在here中找到),并使用了以下代码:

代码语言:javascript
复制
            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,并对这个问题有所了解?提前感谢

EN

回答 2

Stack Overflow用户

发布于 2017-03-08 19:52:56

尝试添加此选项:

代码语言:javascript
复制
--rtsp-tcp
票数 2
EN

Stack Overflow用户

发布于 2016-01-11 11:31:10

我用以下代码播放rtsp流

代码语言:javascript
复制
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());
    }

当您获得播放事件时,您需要启用视频轨道。

代码语言:javascript
复制
private void onPlaying() {
    stopLoadingAnimation();
    VLCInstance.getMainMediaPlayer().setVideoTrackEnabled(true);
}

这可能对你有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34633273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档