Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 Xuggler实时流媒体延迟和高cpu使用率_Java_Performance_Delay_Xuggler - Fatal编程技术网

Java Xuggler实时流媒体延迟和高cpu使用率

Java Xuggler实时流媒体延迟和高cpu使用率,java,performance,delay,xuggler,Java,Performance,Delay,Xuggler,我目前正在使用Xugler接收AR.Drone的视频流。流格式为H.264 720p。我可以用下面的代码解码和显示视频,但是处理器的使用率非常高(双核2ghz上为100%),而且流中的延迟非常大,而且一直在增加 final IMediaReader reader = ToolFactory.makeReader("http://192.168.1.1:5555"); reader.setBufferedImageTypeToGenerate(BufferedIma

我目前正在使用Xugler接收AR.Drone的视频流。流格式为H.264 720p。我可以用下面的代码解码和显示视频,但是处理器的使用率非常高(双核2ghz上为100%),而且流中的延迟非常大,而且一直在增加

        final IMediaReader reader = ToolFactory.makeReader("http://192.168.1.1:5555");
        reader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR);

        MediaListenerAdapter adapter = new MediaListenerAdapter()
        {
            public void onVideoPicture(IVideoPictureEvent e)
            {
                currentframe = e.getImage();
                //Draw frame
            }

            public void onOpenCoder(IOpenCoderEvent e) {
                videostreamopened = true;
            }
        };

        reader.addListener(adapter);

        while (!stop) {
            try {
                reader.readPacket();
            } catch(RuntimeException re) {
                // Errors happen relatively often
            }
        }
使用Xuggler示例应用程序无法解决任何问题,因此我认为我的方法是正确的。另外,当我将分辨率降低到360p时,流是实时的,一切正常。有人知道这种性能问题是否正常,或者我必须做些什么来避免这种情况吗?我对这一点很陌生,而且我还没有找到相关信息,所以有人有什么建议吗

顺便说一句,我试图改变比特率,但没有成功。调用
reader.getContainer().getStream(0.getStreamCoder().setBitRate(比特率)似乎被忽略

提前谢谢

更新: 我遇到了许多这样的错误:

9593 [Thread-7] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] mmco: unref short failure
39593 [Thread-7] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] number of reference frames (0+2) exceeds max (1; probably corrupt input), discarding one
39593 [Thread-15] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] reference overflow
39593 [Thread-15] ERROR org.ffmpeg - [h264 @ 0x7f12d40e53c0] decode_slice_header error

更新2:更改编解码器可以解决上述错误,但性能仍然很差。

JVM实例有多少可用内存?2GB(通过-Xmx2048M),但使用的内存不足1GB。JVM实例有多少可用内存?2GB(通过-Xmx2048M),但使用的内存不足1GB。