还是关于左右声道控制的问题(100分)

  • 主题发起人 主题发起人 lovinger_2000
  • 开始时间 开始时间
L

lovinger_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]请问我用来播放XVID压缩DVD得到的AVI格式的文件也是这样控制左右声道的吗?还有根据我以前用VB遇到的经验,在设置了左右声道以后,2.0的音箱就只有一个发声了,请问怎么解决这类问题呢?
 
这么冷清啊?各位大哥无论知道与否还是顶一下啦,让我心头也舒服一些嘛
 
控制音量要用到waveOutSetVlume函数,此函数的声明在MMSystem.h单元中。
此单放在Delphi目录下的Source/rtl/win中

主意这儿用到两个函数waveOutSetVlume和waveOutGetVolume,不要用混,
我第一次用它们时就给搞混了,好费事。

程序如下:

三个TrackBar的属性设置:Max:=255;Frequency:=16;

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, mmsystem;

type
TForm1 = class(TForm)
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
procedure TrackBar1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure TrackBar3Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.DFM}

//音量控制
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.TrackBar2Change(Sender: TObject);
var
t,v:Longint;
begin

t:=TrackBar2.Position;
waveOutGetVolume(0,@v);
v:=v and $ffff0000 or (t shl 8);
waveOutSetVolume(0,v);
end;


//右声道控制
procedure TForm1.TrackBar3Change(Sender: TObject);
var
t,v:Longint;
begin

t:=TrackBar3.Position;
waveOutGetVolume(0,@v);
v:=v and $0000ffff or (t shl 24);
waveOutSetVolume(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;


end.

试一下我试过不会来好像是系统问题过会儿就要重装了,
不过网上都是这个资料不信你可以去查啊,
如果会来给我发E-mail告诉我一声让我心里有个数啊
ipqqqug@163.com
 
这样来控制左右声道,好像会导致只有一边的音箱有声音啊,郁闷中~还有,使用MediaPlayer控件播放MEPG4格式不行啊,请问怎么解决呢?
 
是的API的左右声道就是左右喇叭。
超级解霸的左右声道应该是自己实现的声音输出。
 
好像产体声是V:=$ffff;
右声道是V:=$ffff0000;
左声道是V:=$ffffffff;
我试过这样可以的而且和winamp差不多啊
 
但是请问各位有没有ActiceX控件可以在设置了左右声道以后,2.0音箱的两边都有输出呢?我急需,谢谢
 
到源码空间去找啊那儿可能有的。
不知道为什么昨天我的声音控制程序可以用但今天却不可以了
 
可是没有人给我一套具体的解决方案吗?可能是因为我给分太低了,因为我是这个论坛的Toucher,本来积分就不多,刚开始的时候也不知道积分是怎么一回事。
 
用现有的这些控件是无法解决这些声道“复制”的问题的!
 
To 3cs:
那么请问3cs朋友,那么有什么办法可以解决声道的复制问题呢,谢谢了,请尽快帮助我好吗,我很急的
 
多人接受答案了。
 
后退
顶部