专业摄像机通过 UDP 和 RTP 向我发送数据包,其中包含 YUV422 像素格式 (RFC 2435) 的 MJPG 数据。通过使用 DatagramSocket 和 DatagramPacket 类,我能够接收数据包。现在我正在寻找一种有效的方法来获取:
大约 80 * RTP_socket.receive(rtpPacket) ---> 1 jpg-File on my Harddisk (with 25 fps)
否则我很快就会丢失相对多的数据包,因为根据 UDP 标准,数据包是由相机连续发送的(偶尔丢失一个包并不是最糟糕的,因为我不需要每一帧)。
现在我正在使用 ByteBuffer 顺序存储数据包(使用 put (.. int offset...) 切断标头,直到我得到一帧的最终数据包。
但不幸的是,我似乎需要使用 ImageIO.write 函数来获取必要的 jpg-Header,对吗?因为它不能直接处理 ByteBuffer...
如果我会在另一个线程(尚未实现)中对图像进行一些后处理,那么 DirectByteBuffer 是否有意义?
希望你明白我在问什么:)。如果没有,请不要犹豫,问
非常感谢