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