vcd和dvd格式分别不同。
vcd通过如下可切换,
mciSendCommand(hStream,MCI_SETAUDIO,MCI_SET_OFF,integer(@sSETAUDIOPARMS)); //hStream为驱动id,也就是MediaPlayer1.DeviceID返回值;
case iChannels of
1: sSETAUDIOPARMS.dwValue:=MCI_DGV_SETAUDIO_SOURCE_LEFT; //left
2: sSETAUDIOPARMS.dwValue:=MCI_DGV_SETAUDIO_SOURCE_RIGHT; //right
3: sSETAUDIOPARMS.dwValue:=MCI_DGV_SETAUDIO_SOURCE_STEREO; //立体声
end;
sSETAUDIOPARMS.dwItem:=MCI_DGV_SETAUDIO_SOURCE;
mciSendCommand(hStream,MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM ,
integer(@sSETAUDIOPARMS));
result:=mciSendCommand(hStream,MCI_SETAUDIO,
MCI_SET_ON,integer(@sSETAUDIOPARMS));
dvd 格式:
const
MCI_DGV_SETAUDIO_STREAM=$4003;
var
s: MCI_DGV_SETAUDIO_PARMS;
begin
if IntLeftRight=1 then
s.dwValue:=1 //值分别为1.,8 八个值。1,2可实现原伴音的切换。
else
s.dwValue:=2;
s.dwItem:=MCI_DGV_SETAUDIO_STREAM ;
mciSendCommand(IntDeviceID,MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM,
integer(@s));
我在vb下面做的,楼主翻译一下吧
Public Sub SetVolTrack(i As Long) '声道控制
Select Case i
Case 0 '静音
mciSendString "set all audio all off", vbNullString, 0, form2.hwnd
Case 1 '左声道
mciSendString "set all audio all off", vbNullString, 0, form2.hwnd
mciSendString "set all audio left on", vbNullString, 0, form2.hwnd
Case 2 '右声道
mciSendString "set all audio all off", vbNullString, 0, form2.hwnd
mciSendString "set all audio right on", vbNullString, 0, form2.hwnd
Case 3 '立体声
mciSendString "set all audio all off", vbnullsting, 0, form2.hwnd
mciSendString "set all audio left on", vbNullString, 0, form2.hwnd
mciSendString "set all audio right on", vbNullString, 0, form2.hwnd
End Select
End Sub
//音量控制
procedure TForm1.TrackBar1Change(Sender: TObject);
var
t,v:Longint;
begin
// if a=0 then Exit;
t:=TrackBar1.Position;
v:=(t shl 8)or(t shl 24);
waveOutSetVolume(0,v);
end;
procedure tform1.trackbar1changer (sender:tobject);//左声道
var t,v:longint;
begin
t:=trackbar1.postion;
wavoutgetvolume(0,@v);
v:=v and $ffff0000 or (t shl 8);
wavoutsetvolume(0,v);
end;
procedure tform1.trackbar2changer (sender:tobject);//右声道
var t,v:longint;
begin
t:=trackbar2.postion;
wavoutgetvolume(0,@v);
v:=v and $0000ffff or (t shl 24);
wavoutsetvolume(0,v);
end;
//获得当前音量值
procedure TForm1.FormCreate(Sender: TObject);
var
v:longint;
begin
waveOutGetVolume(0,@v);
TrackBar2.Position:=hi(v);
TrackBar3.Position:=hi(v shr 16);
if hi(v)>hi(v shr 16) then
TrackBar1.Position:=hi(v)
else
TrackBar1.Position:=hi(v shr 16);
end;