在delphi中用函数播放MP3文件问题!!
beginfilename:='temp.mp3';res:=Tresourcestream.create(0,'music1',pchar('file'));res.s...
begin
filename:='temp.mp3';
res:=Tresourcestream.create(0,'music1',pchar ('file'));
res.savetofile(filename);
MCISendstring(pchar('open'+filename+'type mpegvideo alias ww'),nil,0,0);
MCISendstring('play ww ',nil,0,0);
res.free;
运行程序在播放MP3文件'music1'时,在程序文件夹中会崩出一个带有realplayer音乐文件图标的“temp”文件,退出程序时该“temp”文件即消失。单独打开这个exe文件,也是这样。后把这个exe文件打包成setup,打开运行时在我的windowsxp桌面同样如此。
请问高手是怎么回事,怎样来消除??非内行无扰!!!
原因当然很清楚了,关键是想在实现相同功能的前提下怎样解决?TBASSPlayer v1.3 (文件流播放)应是第三方控件吧,面对一大堆.PAS和其它东西不知怎样安装,况且又是编辑器:Delphi5的。总之对于我这个业余菜鸟而言困难重重啊。恳请高手能操刀一次解析解析,给个满意答复!再加100,不成敬意......
---------------------------------------------------------
如果能用函数播放MP3资源文件而不用那个TEMP,那就更好了。有没有更好的办法...... 展开
filename:='temp.mp3';
res:=Tresourcestream.create(0,'music1',pchar ('file'));
res.savetofile(filename);
MCISendstring(pchar('open'+filename+'type mpegvideo alias ww'),nil,0,0);
MCISendstring('play ww ',nil,0,0);
res.free;
运行程序在播放MP3文件'music1'时,在程序文件夹中会崩出一个带有realplayer音乐文件图标的“temp”文件,退出程序时该“temp”文件即消失。单独打开这个exe文件,也是这样。后把这个exe文件打包成setup,打开运行时在我的windowsxp桌面同样如此。
请问高手是怎么回事,怎样来消除??非内行无扰!!!
原因当然很清楚了,关键是想在实现相同功能的前提下怎样解决?TBASSPlayer v1.3 (文件流播放)应是第三方控件吧,面对一大堆.PAS和其它东西不知怎样安装,况且又是编辑器:Delphi5的。总之对于我这个业余菜鸟而言困难重重啊。恳请高手能操刀一次解析解析,给个满意答复!再加100,不成敬意......
---------------------------------------------------------
如果能用函数播放MP3资源文件而不用那个TEMP,那就更好了。有没有更好的办法...... 展开
4个回答
展开全部
temp文件应该是你调用资源文件时产生的临时文件.
单用MCISendstring函数播放影音文件并不会出现.
我记得你前面有关这个播放问题有提过问题:
http://zhidao.baidu.com/question/44595991.html?si=1
在其中你标志:
res.savetofile(filename);//建立临时文件
那个文件就是这样产生的.
如果你非要产生临时文件,但是又不想让他它显示出来,那只要将文件设置为隐藏了.
而且你的代码不是很完善,如果多次点击按钮或者在目录下MP3文件已经存在,则会报错.我修改了下你的代码,你可以参考参考:
procedure TForm1.Button4Click(Sender: TObject);
var res:TResourcestream;
filename:string;
begin
filename:='temp.mp3';
res:=TResourcestream.Create(0,'MUSIC1',Pchar('FILE1'));
if FileExists('temp.mp3') = false then
res.SaveToFile(filename);
setfileattributes(pchar(ExtractFilePath(Application.ExeName) + 'temp.mp3'),FILE_ATTRIBUTE_hidden);
//上面的为设置文件属性为隐藏.程式关闭时文件也能自动删除.
MCIsendstring(Pchar('open '+filename+' type mpegvideo alias ww'),nil,0,0);
MCIsendstring('play ww',nil,0,0);
res.Free ;
deletefile(filename);
end;
===============================
不知道你说的'不要temp就好了'是什么意思.
如果你不savetofile,就不会产生temp文件了.
如果你不需要调用资源文件,也不会产生其他文件,并且3句话就搞定了.
如果你需要调用资源文件,又非要产生temp文件,并不想让它显示出来,把它的属性设置成隐藏就好了.
你可以发消息给我,或者进我的空间,针对你这个问题,我在博客里转载了一遍文章.
单用MCISendstring函数播放影音文件并不会出现.
我记得你前面有关这个播放问题有提过问题:
http://zhidao.baidu.com/question/44595991.html?si=1
在其中你标志:
res.savetofile(filename);//建立临时文件
那个文件就是这样产生的.
如果你非要产生临时文件,但是又不想让他它显示出来,那只要将文件设置为隐藏了.
而且你的代码不是很完善,如果多次点击按钮或者在目录下MP3文件已经存在,则会报错.我修改了下你的代码,你可以参考参考:
procedure TForm1.Button4Click(Sender: TObject);
var res:TResourcestream;
filename:string;
begin
filename:='temp.mp3';
res:=TResourcestream.Create(0,'MUSIC1',Pchar('FILE1'));
if FileExists('temp.mp3') = false then
res.SaveToFile(filename);
setfileattributes(pchar(ExtractFilePath(Application.ExeName) + 'temp.mp3'),FILE_ATTRIBUTE_hidden);
//上面的为设置文件属性为隐藏.程式关闭时文件也能自动删除.
MCIsendstring(Pchar('open '+filename+' type mpegvideo alias ww'),nil,0,0);
MCIsendstring('play ww',nil,0,0);
res.Free ;
deletefile(filename);
end;
===============================
不知道你说的'不要temp就好了'是什么意思.
如果你不savetofile,就不会产生temp文件了.
如果你不需要调用资源文件,也不会产生其他文件,并且3句话就搞定了.
如果你需要调用资源文件,又非要产生temp文件,并不想让它显示出来,把它的属性设置成隐藏就好了.
你可以发消息给我,或者进我的空间,针对你这个问题,我在博客里转载了一遍文章.
展开全部
不知道对你有没用。
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName := 'c:\music\test.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\test.mp3';
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName := 'c:\music\test.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
MediaPlayer1.FileName := ExtractFileDir(Application.ExeName) + '\test.mp3';
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个和前面一差不多.只不过你要安装一下插件.要不然会出错地. realone和MediaPlayer都很好用.也有很多例子,很好找的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询