簡體   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