⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmediaplayerclass.~pas

📁 delphi基于工业控制的串口通讯
💻 ~PAS
字号:
unit TMediaPlayerClass;

interface
uses
   Windows, Messages,SysUtils,Forms,Classes,Dialogs,MPlayer,StdCtrls,Buttons;
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;
  TMyPlayer=Class(TMediaPlayer)
    private
        { Private declarations }
    public
        { Public declarations }
        constructor Create(AOwner: TComponent);
        //destructor destroy;override;
        procedure RecordViom(ViomName:String;BtStart: TSpeedButton;BtStop :TSpeedButton );
        procedure StopRecordViom(BtStart: TSpeedButton;BtStop :TSpeedButton );
        procedure CreateWav(channels : word; resolution : word; rate : longint; fn : string);//自定义写一个Wav文件头过程
    end;
implementation
{
******************************** TMPlayer****************************************
}
constructor TMyPlayer.Create(AOwner:TComponent);
begin
    inherited  Create(AOwner);
end;
{destructor TMyPlayer.destroy;
begin
    //destroy;
    inherited;
end;}
procedure TMyPlayer.CreateWav( channels : word; { 1(单声)或者2(立体声) }
    resolution : word; { 8或者16,代表8位或16位声音 }
    rate : longint; { 声音频率,如11025,22050, 44100}
    fn : string { 对应的文件名称 } );
var
    wf : file of TWavHeader;
    wh : TWavHeader;
begin
    wh.rId := $46464952;
    wh.rLen := 36;
    wh.wId := $45564157;
    wh.fId := $20746d66;
    wh.fLen := 16;
    wh.wFormatTag := 1;
    wh.nChannels := channels;
    wh.nSamplesPerSec := rate;
    wh.nAvgBytesPerSec := channels*rate*(resolution div 8);
    wh.nBlockAlign := channels*(resolution div 8);
    wh.wBitsPerSample := resolution;
    wh.dId := $61746164;
    wh.wSampleLength := 0;

    assignfile(wf,fn); {打开对应文件 }
    rewrite(wf); {移动指针到文件头}
    write(wf,wh); {写进文件头 }
    closefile(wf); {关闭文件 }
end;
procedure TMyPlayer.RecordViom(ViomName:String;BtStart:TSpeedButton;BtStop :TSpeedButton );
begin
    try
        //在程序当前目录下创建一个Wav文件Temp.wav
        CreateWav(1, 8, 11025, (ExtractFilePath(Application.ExeName)+'WarnMusic\'+ ViomName));
        DeviceType := dtAutoSelect;
        FileName := (ExtractFilePath(Application.ExeName)+'WarnMusic\'+ ViomName);
        Open;
        StartRecording;
        BtStart.Enabled:=false;
        BtStop.Enabled:=true;
    except
        BtStart.Enabled:=True;
        BtStop.Enabled:=false;
        Application.MessageBox('媒体设备初始化失败!','错误',MB_ICONWarning);
        Application.MessageBox('媒体设备初始化失败!','错误',MB_ICONERROR+MB_OK);
    end;
end;
procedure TMyPlayer.StopRecordViom(BtStart: TSpeedButton;BtStop :TSpeedButton );
begin
    try
        Stop;
        Save;
        Close;
        Application.MessageBox('声音录制完毕!','信息',MB_ICONINFORMATION+MB_OK);
        BtStart.Enabled:=True;
        BtStop.Enabled:=false;
    except
        Application.MessageBox('保存声音文件出错!','错误',MB_ICONERROR+MB_OK);
        BtStart.Enabled:=True;
        BtStop.Enabled:=false;
    end;
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -