高分求局域网传送语音的源程序例子或控件,不胜感激!(200分)

  • 主题发起人 主题发起人 gadfly
  • 开始时间 开始时间
G

gadfly

Unregistered / Unconfirmed
GUEST, unregistred user!
我下载了ACMWaveOut/ACMWaveIn的控件,怎么做出来的全是噪音呢???
我是照着那个例子作的阿,只不过是因为没有例子上的那个UDPSock控件和WallPaper控件,我
自己用Indy的UDP控件和NMUDP控件试了试,都是噪音!!为什么啊??
谁还有别的例子啊?请给我一份吧,真的很感谢·
我的邮箱: gadfly00@sina.com
 
给你发了一份,好用给分!嗬嗬…………
 
xue_fg, 尽管放心吧:)
 
我要Delphi的阿,你这个我不太会玩阿……[:(]
 
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls, ACMWaveOut, ACMWaveIn, ACMDialog;

type
TMainForm = class(TForm)
ConnectButton: TButton;
AddrEdit: TEdit;
Label1: TLabel;
ServerSocket: TServerSocket;
ClientSocket: TClientSocket;
ACMDialog: TACMDialog;
ACMWaveIn: TACMWaveIn;
ACMWaveOut: TACMWaveOut;
DropButton: TButton;
Memo: TMemo;
Label2: TLabel;
ClearButton: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ConnectButtonClick(Sender: TObject);
procedure DropButtonClick(Sender: TObject);
procedure ClearButtonClick(Sender: TObject);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketConnecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure ACMWaveInData(data: Pointer; size: Integer);
procedure ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;

implementation

{$R *.DFM}

Const
BufLen:Integer=1024*1024;

Type
Buffer=Array[1..1] of Byte;
BufPointer=^Buffer;

Var
MemStream:TMemoryStream;
Buf:^Buffer;
IsServer:Boolean;
Client:TCustomWinSocket;

procedure TMainForm.FormCreate(Sender: TObject);
Var
Format:Pointer;
begin
ServerSocket.Port:=3366;
ServerSocket.ServerType:=stNonBlocking;
ServerSocket.Open;
GetMem(Buf,BufLen);
Memo.Lines.Add('Local server srarted.');
Format:=ACMDialog.OpenDialog;
If Format=nil Then Exit;
ACMWaveOut.Open(Format);
ACMWaveIn.Open(Format);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
FreeMem(Buf);
ACMWaveIn.Close;
ACMWaveOut.Close;
ServerSocket.Close;
Memo.Lines.Add('Local server shutdown.');
end;

procedure TMainForm.ConnectButtonClick(Sender: TObject);
begin
ClientSocket.Port:=3366;
ClientSocket.ClientType:=ctNonBlocking;
ClientSocket.Address:=AddrEdit.Text;
ClientSocket.Open;
IsServer:=False;
end;

procedure TMainForm.DropButtonClick(Sender: TObject);
begin
ClientSocket.Close;
end;

procedure TMainForm.ClearButtonClick(Sender: TObject);
begin
Memo.Clear;
end;

procedure TMainForm.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo.Lines.Add('A client connected.');
IsServer:=True;
Client:=Socket;
end;

procedure TMainForm.ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo.Lines.Add('A client droped.');
end;

procedure TMainForm.ClientSocketConnecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo.Lines.Add('Connecting to server '+AddrEdit.Text);
end;

procedure TMainForm.ACMWaveInData(data: Pointer; size: Integer);
Var
sending,sent,index,temp:Longint;
s:String;
begin
{ temp:=size;
sent:=0;
Index:=1;
While sent<temp do
Begin
sending:=ClientSocket.Socket.SendBuf(BufPointer(data)[index],Temp);
If sending<>-1 Then
Begin
sent:=sent+sending;
index:=index+sending;
temp:=temp-sending;
End;
End;}
Case IsServer of
True:
Begin
If Client.Connected Then
Begin
Client.SendBuf(data^,size);
End;
End;
False:
Begin
If ClientSocket.Socket.Connected Then
Begin
Str(ClientSocket.Socket.SendBuf(data^,size),s);
Memo.Lines.Add('Sent '+s);
End;
End;
End;
end;

procedure TMainForm.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Var
temp:Longint;
begin
temp:=Socket.ReceiveBuf(Buf^,BufLen);
If NOT IsServer Then Exit;
ACMWaveOut.PlayBack(Buf,temp);
end;

procedure TMainForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
Var
temp:Longint;
begin
temp:=Socket.ReceiveBuf(Buf^,BufLen);
If IsServer Then Exit;
ACMWaveOut.PlayBack(Buf,temp);
end;

end.
 
for mail...
 
Good!
Let me try!
Tommorrow I will give you cents,Thank you very much!
 
楼主既然已经能够进行语音通讯了,主要问题已解决,噪音是因为你的“Volume Control”里的
“Line-in”打开了,你把它静音就行了。我当初和你完全一样.
 
楼上的,能把你的源码给我一份吗,我给你加分,我到现在还不知道如何实现语音传输,请你
多多指教!
 
to jianghua9019:
留下EMAIL,明天我把ACM做的简单例子给你
 
我的EMAIL是:jianghua9019@sina.com
你真的有ACM做的例子吗,请给我发一份。我现在正在做局域网通话软件,但是不知道如何
实现声音的实时传输,如果你对这方面有研究的话,还请多多指导小弟,我对DELPHI不是
十分了解,所以还请你帮我。我将十分感激!
 
seagod007:
我的EMAIL是:jianghua9019@sina.com
你真的有ACM做的例子吗,请给我发一份。我现在正在做局域网通话软件,但是不知道如何
实现声音的实时传输,如果你对这方面有研究的话,还请多多指导小弟,我对DELPHI不是
十分了解,所以还请你帮我。我将十分感激!
 
人气这么旺,真不舍得结束阿……
非常感谢各位阿

seagod007:我还是不知哪个是Line-in ,是右下角的英量控制吗?
是那个波形平衡吗?噪音是没有了,声音还是没哟阿
何况它给出的例子是正常的阿
你也即一分给我吧,谢谢 gadfly00@sina.com
 
gadfly:
你能把你的源码发给我一份吗,我也要做这方面的东西,谢谢!
我的EMAIL是:jianghua9019@sina.com
 
seagod007:
我的EMAIL是:zsc0797@sina.com
请给我发一份。我也不知道如何实现声音的实时传输
将十分感激!
 
seagod007:
可以也给我一份你的源码吗?
我也做了ACM控件的例子,但是通话时就是一点声音都没有。
这个是我的毕业设计,而且月底就要交了,急需啊!!
我的EMAIL:fanglingyi@163.com
 
Seagod007:
请给我一份你的源码吧,非常感谢,还有ACM控件哪里有下载,我的Email:
jinxr@singlee.com.cn
 
firstrose:
我用你上面给的代码做了这个程序,可是为什么做出来的程序没有一点声音呢?请指教一
二,我的毕业设计就是要实现局域网语音通话,这个月底就要交程序了,可是我还没有做出来,
请你务必帮忙,谢谢!
 
seagod007:
我怎么没有收到你的例子呢,你给我发了没有?我这个月底就要交程序了,可是现在
一点头绪也没有,我现在真的很着急,请你快点把你的例子给我好吗?对了,我用firstrose
给的代码做了这个程序,可是根本没有声音,不知道是什么原因,你能指点我一下吗?谢谢!
我在写一遍我的EMAIL:jianghua9019@sina.com
 
to seagod007
可以给我一份吗?我很需要,谢谢!
wangfei-5@sohu.com
 
后退
顶部