Java 使用vlcj将RTSP视频流接收到多个画布
我正在尝试使用Canvas从手机接收多个rtsp视频流到我的PC应用程序 但我首先只测试了两个视频。 这是我现在使用的代码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(
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