文件是數據的物理存在方式,是數據的載體.在Windows下,有各種各樣格式的文件.文件因格式不同而具體作用也不一樣.熟悉文件格式將對我們的編程有莫大幫助.下面,筆者將通過常見的波形文件WAV,VCD視頻文件DAT和圖標文件ICO來介紹常用的幾種文件格式的編程.
一:Wav格式程序編程
Wav格式文件主要由兩部分組成:頭信息和具體數據.其中頭信息部分記錄了該Wav文件的聲道,位率和頻率等信息.聲道一般分為單聲道和立體聲,而位率一般可以分為8位和16位聲.至於聲音頻率可以有1025,22050,44100等多種.也就是說,只要我們定義一個文件頭,然後把純聲音數據添加到其後面即可變成一個完整的可以播放的Wav文件.在本例中,我們通過Mediaplay控件來采集聲音數據.下面就開始動手吧.
運行Delphi,在System頁拖一個Mediaplayer控件到窗體上,默認名為Mediaplayer1。由於我們的程序是采用自己的按鈕,所以將Mediaplayer1的Visible屬性設置為False,其它屬性保持默認值。再放兩個按鈕Button1和Button2。Button1的屬性Name改為BtStart,Caption改為"開始錄音", Button2的屬性Name改為BtStop,Caption改為"停止錄音",Enabled屬性改為False。然後切換窗口到代碼窗口,開始書寫代碼。
程序中,我們定義了一個Wav文件的文件頭格式,錄音時先創建一個只有文件頭的Wav文件,然後將Mediaplayer1錄制下來的聲音寫進文件。其中CreateWav過程的幾個參數意義如下:第一個channels代表聲道,取1時代表單聲,取2時代表立體聲。resolution也只有兩個值可以選擇,取8時代表8位聲音,取16時代表16位聲音,rate則代表聲音頻率,如11025,22050, 44100。值越大則聲音越清晰,當然,所錄制的文件也越大。最後一個參數則代表對應的文件名稱了。所以CreateWav可以有以下形式:
CreateWav(1,8,11025,'C:abc.wav');//在C盤根目錄下創建一個8位單聲道頻率為11025的名為abc.wav的Wav文件
CreateWav(2,16,44100,'C:abc.wav');//在C盤根目錄下創建一個16位立體聲道頻率為44100的名為abc.wav的Wav文件
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, MPlayer;
type
TWavHeader = record //定義一個Wav文件頭格式
rId : longint;
rLen : longint;
wId : longint;
fId : longint;
fLen : longint;
wFormatTag : Word;
nChannels : Word;
nSamplesPerSec : longint;
nAvgBytesPerSec : longint;
nBlockAlign : Word;
wBitsPerSample : Word;
dId : longint;
wSampleLength : longint;
end;
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
BtStart: TButton;
BtStop: TButton;
procedure CreateWav(channels : word; resolution : Word; rate : longint; fn : string);//自定義寫一個Wav文件頭過程
procedure BtStartClick(Sender: TObject);
procedure BtStopClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CreateWav( channels :
[1] [2] [3] [4] [5] [6] [7] [8] 下一頁