从MJPG数据包到Java中的jpeg-File的有效方法

时间:2012-11-08 17:49:22

标签: image udp mjpeg

专业摄像机通过UDP和RTP向我发送数据包,其中包含YUV422-pixelformat(RFC 2435)中的MJPG数据。通过使用DatagramSocket和DatagramPacket类,我能够接收数据包。现在我正在寻找一种有效的方法:

约80 * RTP_socket.receive(rtpPacket)--->我的硬盘上的1 jpg-File(25 fps)

否则我很快就会丢失相对较多的数据包,因为根据UDP标准,数据包是由摄像机连续发送的(因为我不需要每一帧,所以暂停一次包不是最差的)。

现在我正在使用ByteBuffer顺序存储数据包(使用put(.. int offset ...)切断标头,直到我得到一帧的最终数据包。

但不幸的是,似乎我需要使用ImageIO.write函数才能获得必要的jpg-Header,对吗?因为它无法直接处理ByteBuffer ...

如果我在另一个线程(尚未实现)中对图像进行一些后处理,DirectByteBuffer会有意义吗?

希望你理解我的要求:)。如果没有,请不要犹豫,

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以轻松移植此C#实现,实现超过100 FPS:)

https://net7mma.codeplex.com/SourceControl/latest#Rtp/RFC2435Frame.cs

我是作者,如果您需要移植帮助,请告诉我们!