如何使用jlibrtp在Java中使用RTP来降低数据包的速率

时间:2012-01-15 04:32:54

标签: java packet rtp

我只是使用RTP使用jlibrtp将一些bufferedimage从客户端发送到服务器。

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

但问题是,当缓冲图像大小太大时,某些数据包会丢失。但是,当我尝试减小尺寸时,不会发生这个问题。

实际上我发送的图像是从网络摄像头捕获的连续帧,因此当我尝试删除那些“不完整”的图像时,图像屏幕以非连续的方式显示,这是不可接受的。

所以我想问一下是否有办法改善这种情况?

非常感谢!

1 个答案:

答案 0 :(得分:0)

  • 切换到MPEG-2,MPEG-4,Theora或WebM等视频编码格式。
  • 您可以向发件人发回您没有获得某些数据包并需要重新发送的信息。 TCP的优势在于,您可以轻松超时并停止询问数据包何时过时。我无法快速找到jlibrtp,但其他RTP库有重传请求功能。
  • 您可以降低图像分辨率并减少数据发送。
  • 您可以开始发送更多数据。如果这些额外数据是forward error correction system的一部分,您可以重建丢失的数据包。
  • 您可以同时执行这两项操作,降低分辨率并增加错误纠正,以便带宽保持相似。