把MP3文件写到资源文件.RES中,如何写RC文件? ( 积分: 20 )

  • 主题发起人 主题发起人 liu55721
  • 开始时间 开始时间
L

liu55721

Unregistered / Unconfirmed
GUEST, unregistred user!
把声音WAV文件写到RC文件中是这样写:
SOUND1 WAV SOUND.WAV
那么如何将MP3文件写到RC文件中呢?我这样写:
SOUND2 mp3 jncs.mp3 BRCC32可以编译成res,也可通过Delphi编译,但用
Playsound(pchar('sound2'),hinstance, snd_resource);它不播放,也没有其它任何反应.
请各位先生指教!谢谢!
----------------------------------------------
 
把声音WAV文件写到RC文件中是这样写:
SOUND1 WAV SOUND.WAV
那么如何将MP3文件写到RC文件中呢?我这样写:
SOUND2 mp3 jncs.mp3 BRCC32可以编译成res,也可通过Delphi编译,但用
Playsound(pchar('sound2'),hinstance, snd_resource);它不播放,也没有其它任何反应.
请各位先生指教!谢谢!
----------------------------------------------
 
PlaySound本来就不能播放mp3格式!你看看帮助啊,它只能播放.wav格式的!
 
谢谢,我问的是有没有办法将MP3写入资源文件,并用什么方法来从资源文件中播放它.
 
直接播放没有弄过,把文件解下来弄过,就是先把文件从资源里面提取出来,存成临时文件,不知道满足不满足楼主的要求

http://www.21cnsky.com/cgi-bin/bbs/viewthread.cgi?forum=14&topic=18&show=0

var

jpg: TJPEGImage;

resStream: TResourceStream;

begin

jpg := TJPEGImage.Create;

resStream := TResourceStream.Create(HInstance, 'testJpg', 'jpgtype');

jpg.LoadFromStream(resStream);

Image1.Picture.Assign(jpg);

jpg.Free;

resStream.Free;

end;



看看这个文章能不能符合要求,就是不知道mediaplayer能不能直接从流里面载入
 
自己做一个一个资源文件的描述文本RC文件,例如 sample.rc ,“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,

例如:

MEN BITMAP c:/bitmap/men.bitmap
ARJ EXEFILE c:/arj.exe
MOV AVI c:/mov.avi

然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。

在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面。

{$R sample.res}

这样我们就可以在这个单一的执行文件中调用资源了。举例如下:

EXEFILE:

procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

AVI:

procedure LoadAVI;
begin
{Avi1是一个TAnimate类}
Avi1.ResName:='AVI';
Avi1.Active:=True;
end;
 
试一下:
1.RC文件recMp3.rc
MyMp3 RCDATA "c:/a.mp3"
2.生成资源文件
Brcc32 recMp3.rc
3.读取资源文件中MP3
procedure TForm1.Button10Click(Sender: TObject);
var
rStream: TResourceStream;
fStream: TFileStream;
fName: string;
begin
fName:=ExtractFilePath(ParamStr(0))+'MyM.mp3';
rStream := TResourceStream.Create (hInstance, 'MyM', RT_RCDATA);
try
fStream := TFileStream.Create(fname, fmCreate);
try
fStream.CopyFrom(rStream, 0);
finally
fStream.Free;
end;
finally
rStream.Free;
end;

MediaPlayer1.Close;
MediaPlayer1.FileName:=fName;
MediaPlayer1.Open;
end;
 
不好意思上面应该是这一句子
rStream := TResourceStream.Create (hInstance, 'MyM', RT_RCDATA);
 
不好意思上面应该是这一句子
rStream := TResourceStream.Create (hInstance, 'MyMp3', RT_RCDATA);
 
接受答案了.
 
后退
顶部