String Delphi XE7上音频传输的压缩字符串数据建议

String Delphi XE7上音频传输的压缩字符串数据建议,string,delphi,stream,compression,String,Delphi,Stream,Compression,我在Delphi上从事音频流的工作,捕获并将流转换为字符串,然后发送到远程计算机,但我如何才能做得更好更快呢 var Stream: TMemoryStream; Text: String; sCompress: string; begin try Stream := TMemoryStream.Create; Stream.WriteBuffer(Data^, len); //data = microphone capture Stream.Positi

我在Delphi上从事音频流的工作,捕获并将流转换为字符串,然后发送到远程计算机,但我如何才能做得更好更快呢

var
  Stream: TMemoryStream;
  Text: String;
  sCompress: string;
begin
  try
    Stream := TMemoryStream.Create;
    Stream.WriteBuffer(Data^, len); //data = microphone capture
    Stream.Position := 0;
    SetLength(Text, Stream.Size);
    Stream.ReadBuffer(Pointer(Text)^, Stream.Size);
  finally
    Stream.Free;
    SendData(currentUser, Text);
  end;
发送数据基本winsock套接字传输,我写的接收数据如下

WaveOut.waveOutDevice.write(Pointer(sBuf), Length(sBuf)); //sbuf = receivetext

这是可行的,但可能会更好地为您提供数据压缩的建议。我认为随着距离的增加,这将是一个问题

不要使用字符串,使用字节数组。您不需要中间流将数据放入文本中,只需使用SetString即可。对于压缩-我同意LU RD的观点,根本没有理由使用字符串,特别是因为这样做可能会损坏音频数据,具体取决于字符串的处理方式。二进制数据需要按原样发送,因此应该以字节数组或流的形式发送,但绝对不能以字符串的形式发送。@LURD感谢我现在将其转换为bytearray的建议。@JamesFranklin压缩损失少,使用安全,它只是以需要额外CPU开销为代价减少了带宽使用。