delphi indy udp客户端和服务器音频聊天

时间:2014-06-21 21:29:44

标签: delphi audio

我正在创建项目,通过Indy组件和波形音频组件进行多音频聊天,但我坚持错误。这是简单的代码,但我不知道如何解决它。

sendtocl是我使用的客户端

procedure TForm1.recorderData(Sender: TObject; const Buffer: Pointer;
  BufferSize: Cardinal; var FreeIt: Boolean);
begin
  Freeit :=True;
  sendtocl.SendBuffer(Buffer^, Buffersize);
end;

编译时出现错误

  

没有可以使用这些参数

调用的'SendBuffer'的重载版本

任何建议的修复程序?


“sentocl”是我的indyudpclient

procedure TForm1.recorderData(Sender: TObject; const Buffer: Pointer; BufferSize: Cardinal; var FreeIt: Boolean);
begin
  Freeit := True;
  sendtocl.SendBuffer(RawToBytes(Buffer^, Buffersize));
end;

这个来自Remy lebeau的固定代码解决了编译错误,但是当我尝试发送音频时,文本获取了大量数据而网络上的其他客户端听不到声音我认为它与使用indy服务器的onom一起使用我使用的组件是:

Wave audio,indy udp server and client ,,,使用delphi xe5

Remy我可以通过indyudp客户端发送音频流吗?波形音频中的样本是针对winsock但我真的失去了如何用indy做它你能给我参考吗

1 个答案:

答案 0 :(得分:3)

如果您查看SendBuffer()的声明,则需要TIdBytes作为输入。你可以使用Indy的RawToBytes()函数:

procedure TForm1.recorderData(Sender: TObject; const Buffer: Pointer; BufferSize: Cardinal; var FreeIt: Boolean);
begin
  Freeit := True;
  sendtocl.SendBuffer(RawToBytes(Buffer^, Buffersize));
end;