【发布时间】:2014-02-23 18:06:03
【问题描述】:
我了解流 buffer 通常对 IO 很有用。
我想问一下buffer 应该如何在实时 VoIP 应用程序中使用,
比如流在(Android)MediaRecorder output -> LocalSocket ->UDP / RTP
在我看来,似乎没有空间来缓冲任何流。
我说的对吗?还是我错过了什么重要的事情?
在这种情况下不使用缓冲区时设备资源效率(CPU & Buttery)如何?
伪代码
//UNIX type localSocket Server to receive stream from mediaRecorder
server = new LocalServerSocket(SOCKET_ADDRESS);
// local socket between mediaRecorder and localSocket Server
sender = new LocalSocket();
sender.connect(new LocalSocketAddress(SOCKET_ADDRESS));
//mediaRecorder
mRecorder = new MediaRecorder();
//.....................
//sender.getFileDescriptor() is set as the vitual Outputfile
mRecorder.setOutputFile(sender.getFileDescriptor());
mRecorder.prepare();
mRecorder.start();
//localSocket Server accept the stream to receiver
receiver = server.accept();
int val;
byte[] buf;
DatagramPacket packet;
ds = new DatagramSocket(localPort);
while (localServerLoop)
{
//receiver stream is read to (int)val
val = receiver.getInputStream().read();
//======localServer to remoteUDP======================
// (int)val to (byte)buf
buf = toBytes(val);
// byte to packet
packet = new DatagramPacket(buf, buf.length,
InetAddress.getByName(remoteHost), remotePort);
//send to remoteHost
ds.send(packet);
//=========================
}
【问题讨论】:
标签: android stream udp buffer rtp