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