【发布时间】:2014-07-24 18:20:55
【问题描述】:
我正在制作一个音乐流媒体应用程序,我需要在其中通过 UDP 传输数据。 目前,我每 10 毫秒发送一次大小为 1.4 KB 的数据包。但这似乎很慢。现在我读到由于 MTU 问题,建议数据包大小为 1400。还应进行数据包调步以减少数据包丢失。 我测试了3g以上,质量损失并没有那么大。也许我可以增加我的数据包大小,或者减少节奏? 有人可以提出最佳策略吗? 另外,我将不胜感激有关 UDP 流的任何其他建议。 谢谢
发件人:
while(audio_stream.read(buf, 0, BUF_SIZE) != -1) {
final DatagramPacket pack = new DatagramPacket(buf, BUF_SIZE,
InetAddress.getByName(connection.getRecIp().substring(1)),
Integer.parseInt(connection.getRecPort()));
datagramSocket.send(pack);
bytes_count += BUF_SIZE;
Log.d("Ayush", "bytes_count : " + bytes_count);
Thread.sleep(70L, 0);
}
接收者:
while(receivedBytes < length) {
final DatagramPacket pack = new DatagramPacket(new byte[BUF_SIZE], BUF_SIZE);
try {
datagramSocket.receive(pack);
} catch (IOException e) {
e.printStackTrace();
return false;
}
if(pack.getLength() < BUF_SIZE/2) continue;
mappedByteBuffer.put(pack.getData());
receivedBytes += pack.getLength();
//Some more code for other stuff
}
【问题讨论】:
标签: java android sockets udp audio-streaming