繁体   English   中英

从Android到桌面应用程序的音频流

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM