万一老师直播如何播放音乐文件

5 篇文章 0 订阅
3 篇文章 0 订阅

 

 

主要作者:万一

--------------------------------------------------------------------------------

代码文件:
--------------------------------------------------------------------------------
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MediaPlayer1: TMediaPlayer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  MediaPlayer1.Visible := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MediaPlayer1.FileName := 'c:\temp\Test.mp3';
  MediaPlayer1.Open;
  MediaPlayer1.Play;
end;

end.
--------------------------------------------------------------------------------
窗体文件:
--------------------------------------------------------------------------------
 
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 149
  ClientWidth = 270
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 96
    Top = 72
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object MediaPlayer1: TMediaPlayer
    Left = 8
    Top = 24
    Width = 253
    Height = 30
    TabOrder = 1
  end
end
--------------------------------------------------------------------------------

 

#1楼   2008-09-17 14:29  heyongan[未注册用户]
这样我懂,TMediaPlayer能不能像一个变量一样,可以随时申明,随时应用的,我的代码如下:

 

procedure TForm1.Button1Click(Sender: TObject); 
var 
mm: TMediaPlayer; 
begin 
mm := TMediaPlayer.Create(Self); 
mm.FileName := 'F:\音乐\刘德华-黑蝙蝠中队.mp3'; 
mm.AutoOpen := True; 
mm.Play; 
end; 


 

这里我把它定义成一个变量,可就是运行会出错,我想应该是mm := TMediaPlayer.Create(Self); 这个有问题,它需要个 TComponet类型,但我不知道怎么弄, 只是把 self 弄进去,感觉应该是这边错, 老师这个要怎么建立(create)!

 

#2楼 [ 楼主2008-09-17 14:37  万一       
@heyongan
应该需要指定 parent, 如果要隐藏, 把宽高置为 0 即可.
其实模拟 TMediaPlayer, 自己定义一个类也行.

 

 

#3楼   2008-09-17 14:45  heyongan[未注册用户]
我只要随时申明随时可以用就可以,而且不要从控件栏拉下控件,简单的说是把它当成一个变量来操作, 我刚才那那个构造函数改为: mm := TMediaPlayer.CreateParented(Handle); 但是还是不行,甚至也有加了mm.Parent := Self; 可结果仍然是不行

 

 

#4楼 [ 楼主2008-09-17 14:57  万一       
@heyongan

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPlayer, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  mm: TMediaPlayer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  mm := TMediaPlayer.Create(Self);
  mm.Parent := Self;
  mm.Visible := False;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  mm.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  mm.FileName := 'c:\temp\test.mp3';
  mm.Open;
  mm.Play;
end;

end.



 

#5楼   2008-09-17 15:04  heyongan[未注册用户]
老师,可以了, 原来我刚才一直用同一个文件,而那TMediaPlayer又没释放,所以一直会出现设备被占用...... 真是感谢老师!

 

#6楼   2008-09-17 15:17  faceker[未注册用户]
直接用 API 也很简单:
如果是 WAV:
PlaySound('C:\snd.wav', 0, snd_FILENAME and snd_ASYNC);

如果是 MP3(也可以播放 WAV,包括视频也可以):

mciSendString('Open "G:\mp3\snd.mp3" alias MyMp3', nil, 0, 0);
mciSendString('Play MyMp3', nil, 0, 0);


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值