2011-08-31 258 views
1

我想將從rtp(實時)流錄製的H264視頻存儲到文件中。 我已經試過這個簡單的java程序,但vlc播放器無法打開文件。將RTP視頻流(H264編解碼器)寫入mp4文件

這裏是我的代碼:

try 
    { 
     socket = new DatagramSocket(port); 
     fos = new FileOutputStream(filePath + outputFileName); 

     do 
     { 
      DatagramPacket in = new DatagramPacket(inData, inData.length); 
      socket.receive(in); 

      byte[] bytes = in.getData(); 

      if (curPos < buffer.length) 
      { 
       for (int i = 0; i < bytes.length; i++) 
       { 
        buffer[curPos] = bytes[i]; 
        curPos++; 

        if (curPos >= buffer.length) 
        { 
         receivePackets = false; 
         break; 
        } 
       } 
      } 
      else 
      { 
       receivePackets = false; 
      } 

      Thread.sleep(SOCKET_TIMEOUT); 
     } 
     while (receivePackets); 

     fos.write(buffer, 0, buffer.length);    

     if (fos != null) 
     { 
      fos.close(); 
     } 

     if (socket != null) 
     { 
      socket.close(); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (InterruptedException e) 
    { 
     e.printStackTrace(); 
    } 

的文件將被創建,但它無法打開。 是否有任何標題信息需要剪切或添加到字節數組中以獲取正確的視頻文件?

UPDATE:

OK,這個問題似乎是H264 RTP分組的NAL頭部信息,因爲我可以打開一個標準RTP頭錄製的H263視頻(但視頻的質量特別糟糕)。

+0

嗨Rithe,你解決了這個問題嗎?如何從rtp數據包錄製視頻?您是否使用過任何RTP庫去掉RTP頭文件,以便您可以讓NAL單元將其寫入文件?問候,Ram – Ram

+0

我還沒有將數據保存到文件。我試圖通過RTP/RTSP實現實時流。如果您仍在尋找解決方案,也許[spydroid應用程序](http://code.google.com/p/spydroid-ipcamera/)包含一些有用的信息。 – Rich

回答

0

你必須從RTP包中解壓視頻數據

+0

考慮在答案中提供更有用的信息,否則這更多的是評論。 – user3071284