读书人

播放多媒体链接应该怎么做

发布时间: 2012-08-13 13:21:53 作者: rapoo

播放多媒体链接,应该如何做
是这样
比如我有两个文件:路径分别为E:\歌曲\1.mp3,E:\歌曲\1.avi
我想将它们的路径加入到数据库
然后程序里面打开播放,请问应该怎么实现呢
菜鸟求助
100分一次给了

[解决办法]
如果只是把路径存入数据库,很简单,路径只是一个字符串而已。

播放的话可以用 TMediaPlayer


也可以把两个文件做成资源,编译进EXE文件,无需存数据库,只是程序文件会变大。
[解决办法]

探讨
追问,做成资源怎么弄,我正想做软件打开,最大化最小化的声音呢

[解决办法]
探讨
是这样
比如我有两个文件:路径分别为E:\歌曲\1.mp3,E:\歌曲\1.avi
我想将它们的路径加入到数据库
然后程序里面打开播放,请问应该怎么实现呢
菜鸟求助
100分一次给了

[解决办法]
播放器不用自己做的 话 直接掉系统的就行了。。
现在系统注册这种格式。
通用播放器。
[解决办法]
比如我有两个文件:路径分别为E:\歌曲\1.mp3,E:\歌曲\1.avi

看你的意思 好像声音和图像要分开播放。如果 要求较高 你可以去看看ffmpge库。
[解决办法]
做成资源文件,不好啊,你那个又是MP3,又是AVI的,应该很大吧。

为什么不在运行的时候加载路径,然后播放呢?

不知道是不是你说的那样。
[解决办法]
一下代码是将wav做成成资源文件
--------------------
var
Ss:TStrings;
cmd:PChar;
s:string;
begin

ss:=TStringList.Create;
ss.Clear ;


ss.Add('Music1 WAV "D:\1.wav" ') ;
ss.Add('Music2 WAV "D:\2.wav" ') ;


ss.SaveToFile('Wav.rc');

cmd := 'brcc32 Wav.rc';

WinExec(cmd,SW_HIDE);
Sleep(2000);
DeleteFile('Wav.rc');

Ss.Free;

end;
[解决办法]
以上代码编译出wav.res文件 拷贝到你的工程文件夹中,在你的工程文件
{$R *.res}加上下面这段
{$R Wav.res}
播放函数如下
uses MMSystem;
procedure playWav(index:Byte);
var
rs:TMemoryStream;
HRes: HRSRC;
Len: DWORD;
lpRsrc: PByte;
m_hMem: HGLOBAL;
pMem: PByte;
begin

try


HRes := FindResource(HInstance, PChar('Music'+inttostr(index)), PChar('WAV'));
except
HRes:= 0;
end;
try
if HRes <> 0 then
begin
try
Len := SizeofResource(HInstance, HRes);
lpRsrc := PByte(LoadResource(HInstance, HRes));
except
Exit;
end;
try
if lpRsrc <> nil then
begin
m_hMem := GlobalAlloc(GMEM_FIXED, Len);
pMem := Pbyte(GlobalLock(m_hMem));
CopyMemory(pMem, lpRsrc, Len);
rs:=TMemoryStream.Create;
rs.Size := Len;
rs.Write(pMem^,Len);
rs.Position := 0;
GlobalUnlock(m_hMem);
FreeResource(Dword(lpRsrc));
PlaySound(rs.Memory ,0,SND_ASYNC or SND_MEMORY);
end;
except

end;

end;
except

end;

if Assigned(rs) then
begin
try
rs.Clear;
rs.Free;
rs:=nil;
except

end;

end;
end;

调用的时候 playWav(1);
[解决办法]
将上面代码生成的res文件拷贝到你的工程目录,在你的工程中加入

{$R Wav.res}

在{$R *.res}下面就可以

--------------------------------
播放声音代码,需要引用uses MMSystem;
procedure playWav(index:Byte);
var
rs:TMemoryStream;
HRes: HRSRC;
Len: DWORD;
lpRsrc: PByte;
m_hMem: HGLOBAL;
pMem: PByte;
begin



try


HRes := FindResource(HInstance, PChar('Music'+inttostr(index)), PChar('WAV'));
except
HRes:= 0;
end;
try
if HRes <> 0 then
begin
try
Len := SizeofResource(HInstance, HRes);
lpRsrc := PByte(LoadResource(HInstance, HRes));
except
Exit;
end;
try
if lpRsrc <> nil then
begin
m_hMem := GlobalAlloc(GMEM_FIXED, Len);
pMem := Pbyte(GlobalLock(m_hMem));
CopyMemory(pMem, lpRsrc, Len);
rs:=TMemoryStream.Create;
rs.Size := Len;
rs.Write(pMem^,Len);
rs.Position := 0;
GlobalUnlock(m_hMem);
FreeResource(Dword(lpRsrc));
PlaySound(rs.Memory ,0,SND_ASYNC or SND_MEMORY);
end;
except

end;

end;
except

end;

if Assigned(rs) then
begin
try
rs.Clear;
rs.Free;
rs:=nil;
except

end;

end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
playWav(1);
end;

读书人网 >.NET

热点推荐