播放多媒体链接,应该如何做是这样比如我有两个文件:路径分别为E:\歌曲\1.mp3,E:\歌曲\1.avi我想将它们的路
播放多媒体链接,应该如何做
是这样
比如我有两个文件:路径分别为E:\歌曲\1.mp3,E:\歌曲\1.avi
我想将它们的路径加入到数据库
然后程序里面打开播放,请问应该怎么实现呢
菜鸟求助
100分一次给了
[解决办法]
如果只是把路径存入数据库,很简单,路径只是一个字符串而已。
播放的话可以用 TMediaPlayer
也可以把两个文件做成资源,编译进EXE文件,无需存数据库,只是程序文件会变大。
[解决办法]
[解决办法][解决办法]播放器不用自己做的 话 直接掉系统的就行了。。
现在系统注册这种格式。
通用播放器。
[解决办法]比如我有两个文件:路径分别为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;