求救!~频繁用MCI开关播放音频视频文件,长时间后死掉!~(100分)

  • 主题发起人 主题发起人 babyvs
  • 开始时间 开始时间
B

babyvs

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,为什么我用MCI长时间播放-关闭音频文件(2-3天不间断)后,声卡会死掉。其他程序也无法使用声卡。
不间断开关播放视频文件(1天左右)后程序会死掉。无法播放。
用任务管理器看,资源占用不高。
代码:
播放——
var
Con_Str : string;
Ret : array[0..127] of Char;
begin

//打开视频文件
Con_Str:='open '+ Path +' type MPEGVIDEO alias '+alias+' parent '+inttostr(OWner.Handle)+' style child ';
Result := MCISendString(pchar(Con_Str), nil, 0, MsgHandel);
//打开视频文件
Result := MCISendString(pchar('status '+alias+' length'),@(ret),128,MsgHandel);
ToTalLong := Trunc(StrToInt(Trim(ret)));
//从开始处播放
Result := Mcisendstring(pchar('put '+alias+' window at 0'+' '+'0'+' '+IntToStr(owner.Width) +' '+IntToStr(owner.Height)),nil,0,0);
mciSendString(pchar('play '+alias+' notify from ' +
inttostr(0 )),'',0,MsgHandel);//开始播放

关闭--
//停止播放
MCISendString(Pchar('STOP '+alias), nil, 0, MsgHandel);
// MciSendString('close all',0,0,MsgHandel);
//关闭设备
MCISendString('CLOSE ANIMATION', nil, 0, MsgHandel);
MCISendString(Pchar('CLOSE '+alias), nil, 0, MsgHandel);

求各位给点思路。。。。
 
来个人帮帮撒。
 
内存释放没有?
 
换了三,不用MCI,用DSPACK三
 
是你的代码有问题吧!
看看下面的:
var
cmd:String;
dwReturn:Longint;
MCIReturn:array[1..128] of Char;
Ret:PChar;


function PlayVideo(wnd:HWND;AliasName:string;FileName:string;typeDevice:string):string;overload;
var
ShortPathAndFile : String;
hwnds:string;
Const
WS_CHILD = '1073741824';
begin

ShortPathAndFile:=GetShortFileName(FileName);
Str(wnd,hwnds);
cmd := 'open '+ShortPathAndFile+' type '+typeDevice+' Alias '+
AliasName+' parent '+hwnds+' Style '+WS_CHILD +' shareable';
dwReturn := mciSendString(PChar(cmd), nil, 0, 0);
If Not( dwReturn = 0) then

begin

Ret:=@MCIReturn;
mciGetErrorString(dwReturn, Ret, 128);
Result := Ret;
Exit;
end;

Result := 'ok';
end;


//得到短文件名
function GetShortFileName(sLongName:string):string;
var
sShortName : string;
nShortNameLen : Integer;
begin

SetLength(sShortName, MAX_PATH);
nShortNameLen :=GetShortPathNameA(PChar(sLongName),PChar(sShortName),MAX_PATH-1);
if(nShortNameLen = 0)then

begin

Result := 'Error';
exit;
end;

SetLength(sShortName, nShortNameLen);
Result :=StrLower(PChar(sShortName));
end;


function PlayFile(AliasName:string):string;
//播放指定文件
begin

dwReturn := mciSendString(PChar('play ' + AliasName), nil, 0, 0);
If Not (dwReturn = 0) then

begin

Ret:=@MCIReturn;
mciGetErrorString(dwReturn, Ret, 128);
PlayFile := Ret;
Exit;
end;

Result :='ok';
end;


//关闭指定文件
function Close_File(AliasName:string):string;
begin

dwReturn := mciSendString(PChar('Close ' + AliasName), nil, 0, 0);
If Not (dwReturn = 0) then

begin

Ret:=@MCIReturn;
mciGetErrorString(dwReturn, Ret, 128);
Close_File := Ret;
Exit;
end;

Result :='ok';
end;
 
谢谢各位,呵呵。很久没上网了,现在才散分,。不好意思~![:D]
 
后退
顶部