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

📄 ueplayer.pas

📁 MP3播放器
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit uEPlayer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, CheckLst, ExtCtrls, Buttons, Menus, MPlayer,
  MMSystem, ActnList, uMP3Tag, uMPEGAFormat;

type
  TfrmEPlayer = class(TForm)
    SpeedBtn_Open: TSpeedButton;
    SpeedBtn_Pause: TSpeedButton;
    SpeedBtn_Up: TSpeedButton;
    SpeedBtn_Play: TSpeedButton;
    SpeedBtn_Stop: TSpeedButton;
    SpeedBtn_Down: TSpeedButton;
    Panel1: TPanel;
    StatusBar1: TStatusBar;
    MediaPlayer: TMediaPlayer;
    pm_Right: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N34: TMenuItem;
    N35: TMenuItem;
    N36: TMenuItem;
    N37: TMenuItem;
    N38: TMenuItem;
    N39: TMenuItem;
    N40: TMenuItem;
    N41: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N26: TMenuItem;
    N27: TMenuItem;
    N25: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    N28: TMenuItem;
    N29: TMenuItem;
    N30: TMenuItem;
    N31: TMenuItem;
    N32: TMenuItem;
    N33: TMenuItem;
    N11: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    OpenDlg_Files: TOpenDialog;
    SaveDlg_Files: TSaveDialog;
    TrackBar1: TTrackBar;
    Timer_Play: TTimer;
    TrackBar_Play: TTrackBar;
    btn_ShowPlayList: TButton;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Label_Title: TLabel;
    lbl_TotalTime: TLabel;
    lbl_PlayTime: TLabel;
    lbSoundLR: TLabel;
    pgAudioInfo: TPageControl;
    tab_MP3Header: TTabSheet;
    lbl_Info: TLabel;
    tab_ID3: TTabSheet;
    lbl_Artist: TLabel;
    lbl_Title: TLabel;
    lbl_Album: TLabel;
    lbl_Year: TLabel;
    lbl_Genre: TLabel;
    lbl_Comment: TLabel;
    btn_WriteTag: TSpeedButton;
    btn_RemoveTag: TSpeedButton;
    edt_Artist: TEdit;
    edt_Title: TEdit;
    edt_Album: TEdit;
    edt_Year: TEdit;
    cbx_Genre: TComboBox;
    edt_Comment: TEdit;
    btn_ID3Tag: TButton;
    procedure SpeedBtn_OpenClick(Sender: TObject);
    procedure SpeedBtn_PauseClick(Sender: TObject);
    procedure SpeedBtn_StopClick(Sender: TObject);
    procedure SpeedBtn_UpClick(Sender: TObject);
    procedure SpeedBtn_DownClick(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure CDROM1Click(Sender: TObject);
    procedure CDROM2Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Timer_PlayTimer(Sender: TObject);
    procedure SpeedBtn_PlayClick(Sender: TObject);
    procedure btn_ShowPlayListClick(Sender: TObject);
    procedure TrackBar_PlayChange(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure btn_WriteTagClick(Sender: TObject);
    procedure btn_RemoveTagClick(Sender: TObject);
    procedure btn_ID3TagClick(Sender: TObject);
  private
    function ZeroFill(Size: Integer; s: string): string;
    //procedure GetVolume(var wLeft, wRight: Word);
    //procedure SetVolume(nLeft, nRight: Word);
    { Private declarations }
  public
    procedure SetAudioType(Value: Byte);     // 设置声音的类型
    procedure SetWaveLeft(Volume: Integer);  // 设置声音为左声道(Integer 1~13)
    procedure SetWaveRight(Volume: Integer); // 设置声音为右声道(Integer 1~13)
    procedure SetWaveBoth(Volume: Integer);  // 设置声音为双声道(Integer 1~13)
    procedure ResetText;
    //procedure SetWave;
    { Public declarations }
  end;

var
  frmEPlayer: TfrmEPlayer;
  PositionChange: Boolean;
  MP3FilePath: string;

implementation

uses uPlayList, uMovie, uAbout;

{$R *.dfm}
//==============================================================================
// 自定义函数
function TfrmEPlayer.ZeroFill(Size: Integer; s: string): string;
var
  a,b: Integer;
  t: string;
begin
  SetLength(t, Size);
  for a := 1 to Size do
    t[a] := '0';
    b := Size;
    for a := Length(s) downto 1 do
    begin
      t[b] := s[a];
      Dec(b);
    end;
    ZeroFill := t;
end;
//==============================================================================

//==============================================================================
procedure TfrmEPlayer.SetAudioType(Value: Byte);
var
  SetAs: string;
begin
  case Value of
    1: begin
         mciSendString('set all audio all on', nil, 0, Handle);
         SetAs:='stereo';
         lbSoundLR.Caption := '立体声';
       end;
    2: begin
         mciSendString('set all audio all on', nil, 0, Handle);
         SetAs := 'left' ;
         lbSoundLR.Caption := '左声道';
       end;
    3: begin
         mciSendString('set all audio all on', nil, 0, Handle);
         SetAs := 'right';
         lbSoundLR.Caption := '右声道';
       end ;
    4: begin
         mciSendString('set all audio all on', nil, 0, Handle);
         SetAs := 'average';
         lbSoundLR.Caption := '平均';
       end;
    5: begin
         lbSoundLR.Caption :='静音';
         mciSendString('set all audio all off', nil, 0, Handle);
       end;
  end;
  //RetStr := AudioSource(MediaAliasName, SetAs);
end;
//==============================================================================
procedure TfrmEPlayer.SetWaveLeft(Volume: Integer);
var
  Wave: string;
begin
  try
    Wave := '$' + IntToHex(0, 4) + IntToHex(Volume*5000, 4);
    MMSystem.waveOutSetVolume(0, StrToInt(Wave));
  except
  end;
end;

procedure TfrmEPlayer.SetWaveRight(Volume: Integer);
var
  Wave: string;
begin
  try
    Wave := '$' + IntToHex(Volume*5000, 4) + IntToHex(0, 4);
    MMSystem.waveOutSetVolume(0, StrToInt(Wave));
  except
  end;
end;

procedure TfrmEPlayer.SetWaveBoth(Volume: Integer);
var
  Wave: string;
begin
  try
    Wave := '$' + IntToHex(Volume*5000, 4) + IntToHex(Volume*5000, 4);
    MMSystem.waveOutSetVolume(0, StrToInt(Wave));
  except
  end;
end;
//==============================================================================

procedure TfrmEPlayer.SpeedBtn_OpenClick(Sender: TObject);
begin
  frmPlayList.AddPlayFile;
end;

procedure TfrmEPlayer.SpeedBtn_PauseClick(Sender: TObject);
begin
  if frmPlayList.ListBox_PlayFiles.ItemIndex < 0 then
      MessageBox(Handle, '此时没有任何播放文件!', PChar('警告'), MB_OK+MB_ICONWARNING)
  else
  begin
    case MediaPlayer.Mode of
      MpPlaying:
      begin
        MediaPlayer.Pause;
        SpeedBtn_Pause.Caption := '继续';
      end;
      MpPaused:
      begin
        MediaPlayer.Resume;
        SpeedBtn_Pause.Caption := '暂停';
      end;
    end;
  end;
end;

procedure TfrmEPlayer.SpeedBtn_StopClick(Sender: TObject);
begin
 if frmPlayList.ListBox_PlayFiles.ItemIndex < 0 then
    MessageBox(Handle, '此时没有任何播放文件!', PChar('警告'), MB_OK+MB_ICONWARNING)
 else
   begin
     MediaPlayer.Stop;
     MediaPlayer.Rewind;
     TrackBar_Play.Position := 0;
   end;
end;

procedure TfrmEPlayer.SpeedBtn_UpClick(Sender: TObject);
begin
  if frmPlayList.ListBox_PlayFiles.ItemIndex = 0 then Exit;
  if frmPlayList.ListBox_PlayFiles.ItemIndex < 0 then
    MessageBox(Handle, '此时没有任何播放文件!', PChar('警告'), MB_OK+MB_ICONWARNING)
  else
    begin
      MediaPlayer.Stop;
      frmPlayList.ListBox_PlayFiles.ItemIndex := frmPlayList.ListBox_PlayFiles.ItemIndex - 1;
      MediaPlayer.FileName := frmPlayList.ListBox_PlayFiles.Items[frmPlayList.ListBox_PlayFiles.ItemIndex];
      MediaPlayer.Open;
      MediaPlayer.Play;

⌨️ 快捷键说明

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