2010-11-14 42 views
5

我目前正在編寫一個程序,它是一種VoIP客戶端。我正在嘗試建立2個客戶端之間的連接,併發送和接收從麥克風錄製的數據。Android中的MediaRecorder和UDP(DatagramSocket)

我目前使用的文件,但它看起來像一個可怕的實現:

錄音筆開始記錄到一個臨時文件。計時器開始工作,停止記錄器,查看文件大小,然後使用DatagramPacket發送內容。

看起來非常糟糕。我想知道MediaRecorder和MediaPlayer類是否有辦法使用UPD套接字,因爲它分別是文件輸出和輸入(即DatagramSocket)。

我可以使用來自套接字的文件描述符,但套接字使用TCP。我想使用UDP,所以我猜DatagramSocket,但我似乎無法找到在MediaRecorder和MediaPlayer類中使用它的方法。

有沒有人請有一個很好的解決方案呢?

非常感謝您

回答

0

所有的,你可以做到這一點

一種方式是通過實施建立在抽象的空間LocalServerSocket(UNIX名爲socket)第二個線程。然後在第一個線程中創建一個連接到LocalServerSocket的LocalSocket。完成此步驟後,您可以在第一個線程中獲得LocalSocket的FileDescriptor,並將其設置爲MediaRecorder的OutputFile。在剛剛從被剝離的LocalSocket中讀取的第二個線程中,然後寫入到DatagramSocket中。 Ez Pz。

祝你好運, B-Rad公司

+0

這是完全錯誤的!您必須將數據編碼到一個流中,android本地不支持。 ---你是正確的,你可以通過UDP發送幀,但這不是流,那些是原始(視頻/音頻)幀! – debracey 2011-10-28 18:49:30

3

你是在一個ParcelFileDescriptor可能有興趣,然後特別是fromDatagramSocket(...)功能,那麼你可以使用getFileDescriptor函數來設置播放器

*更新的數據源:如果你有Android 4.0或更高版本,這隻適用於offcourse:請參閱API限制

相關問題