Delphi写的多媒播放器

原创 2012年03月25日 19:18:17

program PMedia;

{*************************************************

  版权所有 (C) 2001-2012 XXX公司

  文件名称: PMedia.dpr

  作者:    XXX     版本:    pm1.0.1    时间: 2012-03-24

  工程概要:多媒体播放的小软件,能够播放视频和音频,操作简捷方便          

**************************************************}

uses

  Forms,

  UMedia in 'UMedia.pas' {MediaForm};

{$R *.res}

begin

  Application.Initialize;

  Application.CreateForm(TMediaForm, MediaForm);

  Application.Run;

end.

 

 

unit UMedia;

{****************************************************************

  版权所有 (C) 2001-2012 XXX公司

  文件名称:  

  作者:    XXX    版本:    pm1.0.1    时间: 2012-03-24

  内容摘要:

  其他说明:

  历史记录:

  1.修改人:  XXX  时间:  2012-03-25     版本: pm1.0.2

  修改原因: 添加了精简模式和退出精简模式的新功能

********************************************************************}

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, MPlayer, StdCtrls, FileCtrl, ComCtrls, Buttons;

type

  TMediaForm = class(TForm)

    Panel1: TPanel;  //窗口主面板

    PlayPanel: TPanel;  //视频播放面板

    ProgressBar1: TProgressBar; //进度条

    Timer1: TTimer;//时间组件

    rightGroupBox: TGroupBox; //右侧的group组

    FilterComboBox1: TFilterComboBox; //文件过滤组件

    DriveComboBox1: TDriveComboBox;  //磁盘组件

    DirectoryListBox1: TDirectoryListBox;//文件夹选择列表组件

    FileListBox1: TFileListBox;  //文件列表组件

    bottomGroupBox: TGroupBox;  //底部基本操作的group组

    MediaPlayer1: TMediaPlayer;   //多媒体播放

    repeatBtn: TBitBtn;   //重播按钮

    simpleBtn: TBitBtn;  //精简模式按钮

    playListBtn4: TBitBtn;  //播放列表按钮

    closeBtn: TBitBtn;    //关闭按钮

    playlistLabel: TLabel;  //播放列表标签

    typeLabel: TLabel;  //文件类型标签

    hideBtn: TBitBtn;    // 隐藏按钮

    exitSimpleBtn: TBitBtn; //退出精简模式按钮

    procedure FileListBox1Change(Sender: TObject);

     {************************************************

      过程名称:FileListBox1Change

      功能描述:文件列表中选择文件触发播放事件

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure Timer1Timer(Sender: TObject);

    {************************************************

      过程名称:Timer1Timer

      功能描述:控制进度条

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure repeatBtnClick(Sender: TObject);

    {************************************************

      过程名称:repeatBtnClick

      功能描述:该按钮触发循环播放事件

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure simpleBtnClick(Sender: TObject);

    {************************************************

      过程名称:simpleBtnClick

      功能描述:该过程能够将播放器设置为精简模式

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure playListBtn4Click(Sender: TObject);

    {************************************************

      过程名称:playListBtn4Click

      功能描述:该过程能够将右侧播放列表显示出来,初始情况设置为不显示的

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure hideBtnClick(Sender: TObject);

    {************************************************

      过程名称:playListBtn4Click

      功能描述:该过程能够将右侧播放列表隐藏起来

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

    {************************************************

      过程名称:FormCloseQuery

      功能描述:窗口关闭时弹出提示信息

      入口参数:Sender,CanClose

      出口参数:

      其他说明:

    *************************************************}

    procedure closeBtnClick(Sender: TObject);

    {************************************************

      过程名称:closeBtnClick

      功能描述:关闭按钮提供的关闭窗口的操作

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    procedure exitSimpleBtnClick(Sender: TObject);

    {************************************************

      过程名称:exitSimpleBtnClick

      功能描述:退出精简模式

      入口参数:Sender

      出口参数:

      其他说明:

    *************************************************}

    private

    { Private declarations }

    FileExt:String[4];{存放文件扩展名}

  public

    { Public declarations }

  end;

 

var

  MediaForm: TMediaForm;

  flag: string; //临时标志变量,当重新选择一个播放文件时,进度条初始化

 

implementation

 

{$R *.dfm}

 

procedure TMediaForm.FileListBox1Change(Sender: TObject);

begin

flag:='false'; //先将全局变量设置为false

FileExt:=AnsiLowerCase(ExtractFileExt(FileListBox1.FileName));//文件扩展名小写化

 if FileExt='.wav' then {是声音}

  begin

    flag:='false';

    Self.ProgressBar1.Position:=0; //将进度条置于初始化位置

    self.PlayPanel.Caption:='播放声音';

    MediaPlayer1.Close;

    MediaPlayer1.FileName:=FileListBox1.FileName;

    MediaPlayer1.Open;

    MediaPlayer1.Play;

    flag:='true'; //进度条开始滑动

  end

 else

  if (FileExt='.avi') or (FileExt='.mp4') then{是动画}

   begin

    with MediaPlayer1 do

     begin

      Close;

      flag:='false';

      Self.ProgressBar1.Position:=0; //将进度条置于初始化位置

      display:=Self.PlayPanel;{播放窗口}

      FileName:=FileListBox1.FileName;

      //PlayPanel.Caption:='';

      MediaPlayer1.DisplayRect;

      Open;

      Rewind;

      Play;

      flag:='true';

     end;

   end

  else

    if FileExt='.mid' then{是音乐}

     begin

      flag:='false';

      Self.ProgressBar1.Position:=0;

      PlayPanel.Caption:='播放音乐';

      MediaPlayer1.Close;

      MediaPlayer1.FileName:=FileListBox1.FileName;

      MediaPlayer1.Open;

      MediaPlayer1.Play;

      flag:='true';

     end;

end;

 

procedure TMediaForm.Timer1Timer(Sender: TObject);

begin

if flag='true' then {当flag为true时进度条开始滑动}

  begin

    Self.ProgressBar1.Position:=Self.ProgressBar1.Position+1;//这里只是演示这种功能了,实际上进度条快慢得参照多媒体的时间

  end

else if flag='false' then

  begin

    Self.ProgressBar1.Position:=0;

  end;

end;

 

procedure TMediaForm.repeatBtnClick(Sender: TObject);

begin

Self.ProgressBar1.Position:=0;

if FileListBox1.ItemIndex <>-1 then {列表中有选择的播放文件时,才能重复播放,否则提示选择文件}

   begin

      mediaplayer1.Rewind;

      MediaPlayer1.Play;

   end

else

   messagedlg('请选择你要播放的文件!',mtwarning,[mbyes],0);

end;

 

procedure TMediaForm.simpleBtnClick(Sender: TObject);

begin

    self.Width:=420; //精简模式下不显示右侧的菜单项

    Self.Height:=365; //精简模式下不显示底部的基本操作项

    self.exitSimpleBtn.Visible:=True;//精简模式下为其提供一个退出的按钮

    Self.ProgressBar1.Visible:=False;//让进度条不可见

    Self.MediaPlayer1.Visible:=False;//让播放条不可见

end;

 

procedure TMediaForm.playListBtn4Click(Sender: TObject);

begin

   self.Width:=600; //将右侧的播放列表显示出来,供用户自主操作

end;

 

procedure TMediaForm.hideBtnClick(Sender: TObject);

begin

    self.Width:=420;//隐藏右侧选择列表

end;

 

procedure TMediaForm.FormCloseQuery(Sender: TObject;

  var CanClose: Boolean);

begin

  if MessageDlg('确定退出吗?',mtConfirmation,[mbOk, mbCancel], 0) = mrCancel then

   begin

    CanClose := False;

   end;

end;

 

procedure TMediaForm.closeBtnClick(Sender: TObject);

begin

   Close;

end; 

procedure TMediaForm.exitSimpleBtnClick(Sender: TObject);

begin

    Self.ProgressBar1.Visible:=true; //退出精简模式时让进度条显示

    self.exitSimpleBtn.Visible:=False;//退出精简模式时让退出精简模式按钮隐藏

    Self.MediaPlayer1.Visible:=true;//退出精简模式时让播放条显示

    Self.Height:=489; //退出精简模式时让底部操作部分显示

end;

end.

学习了好几天的delphi了,对delphi有了浓厚的兴趣,今天用delphi写了个简单的多媒体播放器,虽然功能很简单,但愿能跟大家分享一下学习的乐趣,

一起共同学习,共同进步。主要页面如下图:

做的很粗糙,如果大家有兴趣的话可以去我的资源中免费下载http://download.csdn.net/detail/itsource/4171607

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

用Delphi写的多媒播放器

  • 2012-03-25 19:09
  • 5.70MB
  • 下载

Delphi 写的MP3播放器

  • 2008-03-03 15:54
  • 554KB
  • 下载

Delphi 播放器[源码]

Delphi 音乐播放器,支持桌面歌词、换肤、换颜色、歌词自动下载,Win7下支持小窗口预览,有些功能未完全完成,就如调整音量(懒得搞,但是可以听了,只写了一次性播放列表没得循环的)。支持酷狗、QQ的...

delphi 简单播放器

  • 2016-12-07 16:35
  • 577KB
  • 下载

EasyPlayer RTSP播放器源码解析系列之H264一帧多NAL写MP4录像花屏问题解决方案

接上一篇[EasyPlayer源码解析系列之录像写MP4]之续篇,我们来讲解一下关于H264编码格式中的一帧多nal(Network Abstract Layer, 即网络抽象层),关于H264和NA...

win7delphi7视屏播放器

  • 2014-08-28 12:34
  • 224KB
  • 下载

videoView播放视频,简易视频播放器自己写

公司需要,需要播放本地自己录制的视频,所以对格式没有要求,也不需要访问网络视频,就写了一个简易的视频播放器。 超级简单,主要分三部分。 第一,activity,URL自己改了就行: /** * 2...

delphi自制播放器

  • 2007-04-05 15:58
  • 200KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)