怎样获取delphi资源流中的一个多媒体文件的长度?
以MP3为例:varres:tresourcestream;filename:string;beginfilename:='temp.mp3';res:=Tresourc...
以MP3为例:var res:tresourcestream;filename:string;
begin filename:='temp.mp3';res:=Tresourcestream.create(0,'music1',pchar
('file'));//建立流 res.savetofile(filename);//建立临时文件
怎样获取里面的“music1”的长度?
myQQ:729851670. dos62:假如资源文件中有两个MP3文件“music1”和“music2”,那么怎样判断music1播放完毕从而开始music2的播放?上述问题即为此。恭请指点一下。菜鸟致谢啦
==========================================
关键是判断“music1”播放完毕的语句是怎么写的呀。如果var idx:shortint; n:string;res:Tresourcestream;
filename:string;
begin
res:=nil; idx:=1;
filename:='temp.mp3';
if res.Position=res.size then
if idx<2 then
idx:=idx+1
else idx:=1;
n:=inttostr(idx) ;
res:=TResourcestream.create(0,'music1',pchar
('file');
则点RUN出现DEBUGGER对话框!万望高手再指点一下!
--------------------------
用MCISendstring函数播放!在建立的临时文件下:MCISendstring(pchar('open'+filename+'type mpegvideo alias ww'),nil,0,0);MCISendstring('play ww ',nil,0,0);
问的即是假若用这个函数播放资源文件的情况下,怎么判断第一首歌的结束?(莫笑幼稚,这是否根本就不可能??!)请再给个解答! 展开
begin filename:='temp.mp3';res:=Tresourcestream.create(0,'music1',pchar
('file'));//建立流 res.savetofile(filename);//建立临时文件
怎样获取里面的“music1”的长度?
myQQ:729851670. dos62:假如资源文件中有两个MP3文件“music1”和“music2”,那么怎样判断music1播放完毕从而开始music2的播放?上述问题即为此。恭请指点一下。菜鸟致谢啦
==========================================
关键是判断“music1”播放完毕的语句是怎么写的呀。如果var idx:shortint; n:string;res:Tresourcestream;
filename:string;
begin
res:=nil; idx:=1;
filename:='temp.mp3';
if res.Position=res.size then
if idx<2 then
idx:=idx+1
else idx:=1;
n:=inttostr(idx) ;
res:=TResourcestream.create(0,'music1',pchar
('file');
则点RUN出现DEBUGGER对话框!万望高手再指点一下!
--------------------------
用MCISendstring函数播放!在建立的临时文件下:MCISendstring(pchar('open'+filename+'type mpegvideo alias ww'),nil,0,0);MCISendstring('play ww ',nil,0,0);
问的即是假若用这个函数播放资源文件的情况下,怎么判断第一首歌的结束?(莫笑幼稚,这是否根本就不可能??!)请再给个解答! 展开
1个回答
展开全部
假定你的foo.rc如下:
music1 mymp3 a01.mp3
music2 mymp3 a02.mp3
//依次为资源名、类型、具体文件名(将在资源编译后被加入到foo.res文件中),在程序里使用的是其资源名,而不是本名。
procedure play(filename:string);
var
res:TResourceStream;
begin
//filename:='music1';
if fileexists('temp.mp3') then deletefile('temp.mp3');
sleep(100);
res:=TResourceStream.Create(hinstance,filename,'mymp3');
res.SaveToFile('temp.mp3');
res.Free;
sleep(100);
//res.Seek(0,soEnd);
//if res.Position=res.Size then showmessage(inttostr(res.size));
MCIsendstring('open temp.mp3 type mpegvideo alias tp',nil,0,0);
MCISendString('play tp from 0',nil,0,0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
play('music1');//播放第一首
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ret:array[0..255]of char;
begin
MCISendString('status tp mode',ret,sizeof(ret),0);
if string(ret)='stopped' then
begin
MCISendString('close tp',nil,0,0);
play('music2');//播放第二首
end;
end;
music1 mymp3 a01.mp3
music2 mymp3 a02.mp3
//依次为资源名、类型、具体文件名(将在资源编译后被加入到foo.res文件中),在程序里使用的是其资源名,而不是本名。
procedure play(filename:string);
var
res:TResourceStream;
begin
//filename:='music1';
if fileexists('temp.mp3') then deletefile('temp.mp3');
sleep(100);
res:=TResourceStream.Create(hinstance,filename,'mymp3');
res.SaveToFile('temp.mp3');
res.Free;
sleep(100);
//res.Seek(0,soEnd);
//if res.Position=res.Size then showmessage(inttostr(res.size));
MCIsendstring('open temp.mp3 type mpegvideo alias tp',nil,0,0);
MCISendString('play tp from 0',nil,0,0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
play('music1');//播放第一首
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ret:array[0..255]of char;
begin
MCISendString('status tp mode',ret,sizeof(ret),0);
if string(ret)='stopped' then
begin
MCISendString('close tp',nil,0,0);
play('music2');//播放第二首
end;
end;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询