关于Delphi中MediaPlayer的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 09:06:33
我在Delphi中使用MediaPlayer播放Wave或AVi文件时,若指出了相关设备类型反而播放不出来,不指定定设备类型却可以播放,请帮我解答下怎么样回事,谢谢!
Procedure TForm1.ButtonClick(Sender:TObject);
begin
With MediaPlayer1 do
begin
FileName:='....wav' //这里少了,反正是正确的路径
DeviceType:='dtWaveAudio';
Open;
Play;
end;
end;
上面的代码中若不加"DeviceType:='dtWaveAudio';"可以播放,加了反而不可以播放.
第一位:问题是设备类型没有设错啊,在这个控件的属性里面有的.最后还是播放不出来.
第二位:你说它是一个Bug,也就是说是软件本身隐藏的一个错误了?也不是没有可能,但可能性不大,最好再详查一下资料.谢了.

这好像是一个bug,类型只能选择为dtAutoSelect

你自己看下面代码,是MPlayer单元文件的部分代码

if FDeviceType <> dtAutoSelect then
FFlags := FFlags or mci_Open_Type;

if FDeviceType <> dtAutoSelect then
FFlags := FFlags or mci_Open_Type
else
FFlags := FFlags or MCI_OPEN_ELEMENT;

以上莫名其妙做了两次相同的判断.将上面的代码改为这样
if FDeviceType <> dtAutoSelect then
FFlags := FFlags or mci_Open_Type;

FFlags := FFlags or MCI_OPEN_ELEMENT;
之后重新安装控件就可以支持自定义类型啦

MediaPlayer的DeviceType最好设置为自动,这样能兼容各种音乐类型。如果指定了,就容易出错。