這次的作業目的是讀取音樂(.wav)檔的內容,內容包括了檔頭、檔案大小、聲道數、每秒取樣數(其實就是頻率)
還有音訊格式。程式的部分首先要開啟音樂檔,用OpenDialog,然後再把資料結構為FILE的指標使用fseek設定一下:
fseek ("FILE變數名稱","位置",SEEK_SET);
設定完後再使用fread去讀取:
fread("變數名稱", 1, "讀幾個位元","FILE變數名稱");
再來印出:
Edit1->Text = AnsiString("變數名稱");
接下來一樣再繼續重新設定指標指到的位置、讀取、印出....
基本上這次的作業我沒遭遇到甚麼大困難,不過在蒐集檔案的相關資料、格式上倒是花了一點時間 ,這還挺重要的,為了要決定指標指到的位置,以及指到後該以何種變數去存放它。
例如檔案大小我用unsigned int去存(其實BYTE也行不過讀到後還要經過公式a[0]+a[1]*256+a[2]*256*256...的轉換)
檔頭的RIFF我就用字串去存,聲道數我用BYTE存。
其實這次的作業還跟之前讀取BMP檔頗類似的,一樣都是讀取檔案內的一些資訊。
還有音訊格式。程式的部分首先要開啟音樂檔,用OpenDialog,然後再把資料結構為FILE的指標使用fseek設定一下:
fseek ("FILE變數名稱","位置",SEEK_SET);
設定完後再使用fread去讀取:
fread("變數名稱", 1, "讀幾個位元","FILE變數名稱");
再來印出:
Edit1->Text = AnsiString("變數名稱");
接下來一樣再繼續重新設定指標指到的位置、讀取、印出....
基本上這次的作業我沒遭遇到甚麼大困難,不過在蒐集檔案的相關資料、格式上倒是花了一點時間 ,這還挺重要的,為了要決定指標指到的位置,以及指到後該以何種變數去存放它。
例如檔案大小我用unsigned int去存(其實BYTE也行不過讀到後還要經過公式a[0]+a[1]*256+a[2]*256*256...的轉換)
檔頭的RIFF我就用字串去存,聲道數我用BYTE存。
其實這次的作業還跟之前讀取BMP檔頗類似的,一樣都是讀取檔案內的一些資訊。
沒有留言:
張貼留言