2
我有一個從Android設備流媒體視頻/音頻服務器 流都很好,但是當我保存流數據來回MediaRecoreder我無法播放該文件的應用程序如何播放從Android設備流式傳輸到服務器的視頻?
的Android代碼:
String hostname = "000.000.000.000";
int port = 0000;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(hostname), port);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.start();
服務器端:
Socket userSocket = socket.accept();
//DataInputStream dis;
dis = new DataInputStream(userSocket.getInputStream());
while(true){
dis.read(buf , 0 , buf.length);
saveBufferToFile(buf);
}
現在我用FileOutStream .write()保存緩衝區;方法,但輸出文件根本無法播放。
經過研究我明白,我需要將mp4頭文件添加到文件中,然後再將數據寫入文件中,但我不知道如何執行此操作!
問候,
好的,我確定我讀取了所有的字節,並將該文件保存在設備和服務器上!這不會解決問題!而我正在尋找這個問題!我發現我需要添加文件頭和頁腳,這些文件包含文件的內容長度,我不知道我保存了多少!所以我認爲這是聯合國可解決的問題,我應該找到另一種方式將數據從Android設備傳輸到服務器。 – daigoor
@daigoor:問題不在於讀取所有字節。它寫入的字節太多。在每個循環中,您正在寫入整個緩衝區,無論天氣與否,它都會被讀取。從網絡讀取並在文件的持續時間內填充緩衝區的可能性幾乎沒有。直到你解決這個問題,你永遠不會讓它走得更遠。 –
我知道..但我現在遠離這個錯誤,現在我開始做其他事情,我停止了這個項目的工作,直到我完成了我的任務。 – daigoor