2012-01-15 108 views
0

我只是使用RTP从客户端发送一些BufferedImage中使用jlibrtp服务器的速度。如何减少数据包的使用RTP在Java中与jlibrtp

并且每个数据包被限制为1480字节,因此我需要将每个图像分成几个部分并将字节发送到服务器,并在服务器端需要等待,直到它接收到所有字节并重新构建bufferedimage。

但是,当bufferedimage大小太大时,问题很多,一些数据包会丢失。但是,当我尝试缩小尺寸时,这个问题不会发生。

实际上,我发送的图像是网络摄像头的连续帧捕捉,所以当我试图放弃这些“不完整”图像时,图像屏幕会以非常“不连续”的方式显示,这是不可接受的。

所以我想问一下有什么方法可以改善这种情况吗?

非常感谢!

+0

你用什么编解码器编码帧? – 2012-01-16 20:26:47

+0

我只是用javaCV抓住从网络摄像头图像和图像转换为字节数组,并将其发送 – Kenny910 2012-02-07 16:34:50

+0

你为什么不食的MPEG数据流中的数据,并通过网络发送该数据流(找JMF/FMJ库本)。 MPEG提供在网络上一定的抗跌性,并能处理帧丢失。 – 2012-02-08 12:05:08

回答

0
  • 切换到MPEG-2,MPEG-4,Theora或WebM等视频编码格式。
  • 您可以发回给发件人,您没有收到一些数据包,需要他们发送。与TCP相比,优势在于您可以轻松超时并停止询问数据包是否过旧。我无法快速找到jlibrtp,但其他RTP库具有重新发送请求功能。
  • 您可以降低图像分辨率并发送更少的数据。
  • 您可以开始发送更多数据。如果这个额外的数据是forward error correction system的一部分,您可能能够重建丢失的数据包。
  • 你都可以做,降低分辨率,因此带宽保持类似的增长纠错。