android将音频流传输到服务器
我想了解套接字是如何工作的,尤其是我需要一些代码示例,以便服务器端接收来自设备的mediarecorder发送的流。
非常感谢您的帮助。
我真正的最终目的是在设备上谈话,并在PC上收听,只是一个方向。
目前,我可以使用以下代码发送流:
String hostname = "192.168.1.10";
int port = 8000;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(hostname), port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pfd.getFileDescriptor());
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
似乎没问题,但我个人更喜欢将设备上的音频缓存并从另一个线程发送到服务器,而不是像您那样直接将录音机绑定到套接字。 因为本地缓冲将允许您优雅地处理连接中断。
想象一下,你正在记录和用户通过隧道,并失去了互联网连接 - 如果你直接流媒体,套接字将关闭,用户会恼火:-)但是,如果你在本地缓冲数据,你可以重新建立连接并继续将音频从您离开的地方发送到服务器,并希望用户甚至不必知道连接中断就发生了,因为它只是奇迹般地工作。
为了使它起作用,你必须将记录写入本地缓冲区,并且有一个单独的线程检查缓冲区中的新数据并尽快发送到服务器。
链接地址: http://www.djcxy.com/p/56839.html