0
在我的應用程序中,我需要首先從特定文件中讀取音頻數據,然後將其存儲在緩衝區中。之後,我會用它來處理和東西。問題是,當我試圖打印出它的內容是給0:緩衝區讀取文件給出零的音頻數據
String data = String.valueOf(buffer[50]+" "+buffer[100]+" "+buffer[200]+buffer[599]);
display.setText(data);
打印上述statment給所有零...爲什麼???!
這裏是我的代碼:
public void readAudioDataFromFile() {
String filePath2 = "/storage/sdcard0/Sounds/originalFile.pcm";
FileInputStream ins = null;
File file = new File(filePath2);
int size = (int) file.length();
byte [] buffer=new byte [size];
try {
ins= new FileInputStream(filePath2);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ins.read(buffer, 0,size);
int count =0;
for(int i=0; i<buffer.length; i++)
{
if(buffer[i]!=0)
count++;
}
String data = String.valueOf((count);
display.setText(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
奇怪的是,當我嘗試了以下聲明:
int x= ins.read(buffer, 0,size);
當我打印的x,它給出了一個數等於文件大小,
此外,當我試圖打印出「計數」,你可以看到我的代碼,它也給出了輸出!
我的意思是不應該都意味着該緩衝區不是空的?以及爲什麼如果它不是空的,爲什麼當我試圖打印出它的元素它給了我零?
什麼樣的數據是「音頻數據」? – skyman
@bugy在談論音頻數據時,我們可以假設PCM,並且文件的擴展名是PCM。 –
您對'ins.read'的調用返回一個整數,表示從文件中讀取的字節數。它返回什麼價值? –