2011-12-20 61 views
7

我想了解如何套接字的工作,特別是我需要一些代碼示例服務器端接收設備從媒體記錄器發送的流。android stream音頻到服務器

非常感謝您的幫助。

我真正的最終目的是在設備上談話,並在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(); 
+0

您在PC上使用哪種語言? – Axis 2012-01-06 19:16:11

+0

我使用.NET平臺,vb.net或c#是一樣的。 – Giuseppe 2012-01-07 08:09:49

回答

4

似乎不錯,但我個人更喜歡緩衝設備上的音頻,它從另一個發送到服務器而不是像你一樣直接將錄音機綁在插座上。因爲本地緩衝將允許您優雅地處理連接中斷。

想象一下,你正在記錄和用戶通過隧道,並失去互聯網連接 - 如果你直接流媒體,套接字將關閉,用戶會很惱火:-)但是,如果你是在本地緩衝數據,您可以重新建立連接並繼續從停止的地方將音頻發送到服務器,並且希望用戶甚至不必知道連接中斷就發生了,因爲它只是奇蹟般地工作。

爲了讓它起作用,您必須將錄製內容寫入本地緩衝區,並有單獨的線程檢查該緩衝區上的新數據並儘快發送到服務器。

+2

一些示例點? – Giuseppe 2012-01-07 08:09:14