2014-11-06 44 views
0

我在Android上有一個錄音應用程序,並且我在朋友的手機上遇到了一個奇怪的問題。MediaPlayer爲wav文件拋出IOException

一個錄音沒有工作,並拋出:

E/MediaPlayer-JNI(5996): QCMediaPlayer mediaplayer NOT present 
E/MediaPlayer(5996): Unable to create media player 
E/com.audioRec.player.MediaPlayer(5996): setDataSourceFD failed.: status=0x80000000 
E/com.audioRec.player.MediaPlayer(5996): java.io.IOException: setDataSourceFD failed.: status=0x80000000 

但打成功在Windows媒體播放器,VLC播放等!!!!!!!!!

Could someone take a look over the header of the "RecordingNotOk.wav" file?

Here are both recordings

回答

1

對於RecordingNotOk.wav文件,它聽起來像數據塊的指定大小大於文件大小更大: 00 F8 00 0A在小端排序是718848個字節,而整個文件大小隻有716844和可用於該塊的實際數據大小僅爲716800

這個數字可以在這裏找到(「數據」後,3號線):

52 49 46 46 24 F0 0A 00 57 41 56 45 66 6D 74 20 RIFF $ð?? WAVE fmt 
10 00 00 00 01 00 02 00 80 3E 00 00 00 FA 00 00 ???? ???? >?? ?ú?? 
04 00 10 00 64 61 74 61 00 F8 0A 00 00 00 00 00 ???? data ?ø?? ???? 

基本上看來你的文件已被截斷。一些玩家可能會忽略這一點,並嘗試播放文件末尾的任何內容。我猜Android上它試圖根據預期的大小首先讀取整個文件,因此IOException

+0

非常感謝!所以我需要在加載文件時「修補」頭文件...我必須覆蓋數據子塊大小(wholeFileSize - 44字節)。另外,我必須確保在我寫入標題時,這些值是正確的。目前,我增加了來自麥克風的所有數據塊大小,並在最後的標題中寫入該值。我想我應該根據文件大小計算該值... – 2014-11-22 20:27:21

相關問題