2014-01-11 34 views
1

我正在試圖制定一個錄製音頻的例子,MediaRecorder,錄製的數據通過Android上的UDP套接字(> = 4.0)傳遞。任何人有MediaRecorder使用ParcelFileDescriptor.fromDatagramSocket?

閱讀一篇文章: Broadcasting video with Android - without writing to local files, 我使用ParcelFileDescriptor.fromDatagramSocket

下面是一個簡單的僞代碼,我目前的工作:

//private DatagramSocket ds; 
    //private MediaRecorder mRecorder; 
    ParcelFileDescriptor pfd = ParcelFileDescriptor.fromDatagramSocket(ds); 

    mRecorder = new MediaRecorder(); 
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
    mRecorder.setOutputFile(pfd.getFileDescriptor()); 
    mRecorder.prepare(); 
    mRecorder.start(); 

這裏只是一個簡單的DatagramSocket(UDP)偵聽器線程循環觀察DatagramSocket ds

//... 
    private DatagramSocket ds; 
    private int localPort = 39000; 
    private MediaRecorder mRecorder; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try 
     { 
      ds = new DatagramSocket(localPort); 
     } 
     catch (SocketException e) 
     { 
      System.out.println(e); 
     } 
     class IOThread extends Thread 
     { 
      @Override 
      public void run() 
      { 
       byte []buf = new byte[1024]; 
       DatagramPacket packet= new DatagramPacket(buf, buf.length); 
       while (true) 
       { 
        try 
        { 
         ds.receive(packet); 
         SocketAddress sockAddress = packet.getSocketAddress(); 
         int len = packet.getLength(); 
         String msg = new String(buf, 0, len); 
         System.out.println(msg + ":" + len + "byte receive by "+ sockAddress.toString()); 
        } 
        catch (IOException e) 
        { 
         System.out.println(e); 
        } 
       } 
      } 
     } 
     IOThread io1 = new IOThread(); 
     io1.start(); 
    //.......... 

原則上,我期望通過MediaRecorder記錄緩衝區通過UDP FileDescriptor,並以某種方式我可以管理套接字,但到目前爲止,我沒有觀察到任何事情發生。

我確認了UDP偵聽器單元與其他UDP輸入正常工作,並且MediaRecorder單元應該沒問題,因爲它與localFiles而不是UDP socket FileDescriptor一起工作。

有什麼建議嗎?

在此先感謝!

回答