android将音频流式传输到服务器
Posted
技术标签:
【中文标题】android将音频流式传输到服务器【英文标题】:android stream audio to server 【发布时间】:2012-01-24 11:23:06 【问题描述】:我想了解套接字是如何工作的,特别是我需要一些代码示例供服务器端接收 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();
【问题讨论】:
您在 PC 上使用什么语言? 我用的是.NET平台,vb.net或者c#都一样。 【参考方案1】:似乎没问题,但我个人更喜欢在设备上缓冲音频并将其从另一个线程发送到服务器,而不是像你那样直接将录音机绑定到套接字。因为在本地缓冲可以让你优雅地处理连接中断。
假设您正在录制并且用户通过隧道并失去互联网连接 - 如果您直接流式传输,则套接字将关闭并且用户会很恼火:-) 但是,如果您在本地缓冲数据,您可以重新建立连接并继续将音频从上次中断的位置发送到服务器,希望用户甚至不必知道刚刚发生了连接中断,因为它只是神奇地起作用。
为了让它工作,您必须将记录写入本地缓冲区,并有一个单独的线程检查该缓冲区上的新数据并尽快发送到服务器。
【讨论】:
以上是关于android将音频流式传输到服务器的主要内容,如果未能解决你的问题,请参考以下文章