Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用vlcj将RTSP视频流接收到多个画布_Java_Video Streaming_Vlcj - Fatal编程技术网

Java 使用vlcj将RTSP视频流接收到多个画布

Java 使用vlcj将RTSP视频流接收到多个画布,java,video-streaming,vlcj,Java,Video Streaming,Vlcj,我正在尝试使用Canvas从手机接收多个rtsp视频流到我的PC应用程序 但我首先只测试了两个视频。 这是我现在使用的代码 final String url = "rtsp://192.168.173.217:8085"; final String url2 = "rtsp://192.168.173.104:8086"; SwingUtilities.invokeLater(new Runnable() { @Override public void run(

我正在尝试使用Canvas从手机接收多个rtsp视频流到我的PC应用程序

但我首先只测试了两个视频。 这是我现在使用的代码

final String url = "rtsp://192.168.173.217:8085";
final String url2 = "rtsp://192.168.173.104:8086";

SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            //new MediaPlayer(filePath);
            MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();

            CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas1);
            EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
            mediaPlayer.setVideoSurface(videoSurface);

            CanvasVideoSurface videoSurface2 = mediaPlayerFactory.newVideoSurface(canvas2);
            EmbeddedMediaPlayer mediaPlayer2 = mediaPlayerFactory.newEmbeddedMediaPlayer();
            mediaPlayer2.setVideoSurface(videoSurface2);

            mediaPlayer2.playMedia(url2);
            mediaPlayer.playMedia(url);

        }
    });   
问题是,这适用于视频文件或单个rtsp流,但不适用于多个流

它的行为就像所有流都包含在同一个画布中,并伴随着这些错误(嗯,只有其中的一些错误)


您应该发布完整的代码示例,而不是片段。例如,您没有显示如何创建画布1和画布2。无论如何,当run()方法退出时,您在run()方法中创建的那些对象将有资格进行垃圾收集,因此这可能会给您带来一些问题,即使不是您要问的问题。你需要保留对所有vlcj对象的硬引用。我刚刚发现问题可能不是源于代码,而是源于VLC本身。我试图在单独的VLC窗口中打开两个流,但两个流仅包含在一个窗口中,而另一个窗口显示为空白。所以问题可能来自我的服务器代码。我会多看看的,谢谢
[h264 @ 1774e6e0] decode_slice_header error
[H264 Decoder @ 17df9720] invalid mixed IDR / non IDR frames cannot be decoded in slice multithreading mode
[h264 @ 1774e6e0] illegal memory management control operation 32