2012-09-09 201 views
3

我用我的Android應用程序的流從手機攝像頭的視頻到我的PC服務器,並需要將它們保存到硬盤上的文件。因此,文件創建和流成功保存,但生成的文件無法播放任何視頻播放器(GOM,KMP,Windows媒體播放器,VLC等) - 沒有圖片,沒有聲音,只有播放錯誤。保存視頻流文件

我測試了我的Android應用程序到手機,並可能會說,在這種情況下拍攝的視頻成功地存儲在手機SD卡,並將其傳輸到PC後打不用其他錯誤,所以,我的代碼是正確的。最後,我意識到視頻容器中的問題:數據從手機以MP4格式進行流式傳輸,並存儲在PC上的* .mp4文件中,在這種情況下,文件可能不適合播放視頻播放器。任何人都可以建議如何正確保存流式視頻到文件?

還有就是我的代碼,處理和存儲流數據(沒有錯誤處理,簡化):

// getOutputMediaFile() returns a new File object 

DataInputStream in = new DataInputStream (server.getInputStream()); 
FileOutputStream videoFile = new FileOutputStream(getOutputMediaFile()); 
int len; 
byte buffer[] = new byte[8192]; 

while((len = in.read(buffer)) != -1) { 
    videoFile.write(buffer, 0, len); 
} 

videoFile.close(); 
server.close(); 

此外,我將不勝感激,如果有人會在處理養護談論可能的「陷阱」媒體流。

謝謝你,希望對你有所幫助!

Alex。

UPD:

對於錄製視頻局部到手機的存儲使用:

//targetFile - new File object, represents a file on phone SD card 

myMediaRecorder.setOutputFile(targetFile); 

併爲它流於PC(沒有錯誤處理,簡化)

ParcelFileDescriptor pfd = null; 
Socket socket = null; 
String hostname = "my IP"; 
int port = 8081; 

socket = new Socket(InetAddress.getByName(hostname), port); 
pfd = ParcelFileDescriptor.fromSocket(socket); 

myMediaRecorder.setOutputFile(pfd.getFileDescriptor()); 
+1

您的手機可以播放錄音?如果沒有,我會說你的代碼可能是問題。 –

+0

我將我的Android應用程序測試成手機和錄製的視頻在手機和PC上成功播放。 – Alex

+0

更新了這篇文章,展示了我如何在手機上本地處理視頻採集並將其流式傳輸到PC。 – Alex

回答