我用我的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());
您的手機可以播放錄音?如果沒有,我會說你的代碼可能是問題。 –
我將我的Android應用程序測試成手機和錄製的視頻在手機和PC上成功播放。 – Alex
更新了這篇文章,展示了我如何在手機上本地處理視頻採集並將其流式傳輸到PC。 – Alex