[英]Streaming audio from Android to desktop application
标题真的是什么。 我需要从电话上的麦克风流式传输音频,然后在计算机上的桌面应用程序(也是Java代码)中播放它。
使用UDP或TCP对我来说无关紧要,无论什么效果最好。 无论如何,手机和电脑将在同一个NAT上,因此传输工作正常。
我很清楚如何使用以下代码从设备发送流数据:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
String host = "10.0.2.2";
int port = 5740;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(host), port);
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.prepare();
recorder.start();
Log.d(TAG, "Sending audio for 20 seconds..");
Thread.sleep(20000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
问题是,如何在PC上的Java应用程序中播放此流? 或者有更好的方式来传输声音吗?
我已经在互联网上挖掘了这方面的信息,但没有任何好的结果,但肯定有人必须先完成这个吗?
在此先感谢您的任何帮助!
我做了一些非常接近你一直试图做的事情。 我在服务器上使用gstreamer监听udp端口。 还有一个用java编写的中继服务器,它基本上只不过是一个环回套接字。 有一个服务器端口等待移动客户端连接,在接收数据时,它使用DatagramPackets(udp数据包的java类)将它们全部转储到gstreamer的udp端口。 唯一的问题是为你的gstreamer管道找到合适的解码器。
你能编写一个只在该端口连接到手机并接收数据的客户端吗?
现在,没有mp4 java解码器,所以你需要使用另一种格式。 使用JavaLayer或JOgg查看一些示例应用程序。 它们都可以与任何InputStream一起使用,因此只要您可以打开套接字,就可以播放您的流。
另外,我不确定Android,但是你不需要打开ServerSocket并等待连接吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.