要实现类似QQ视频聊天的摄像头图像网络传输。
现已将图像捕获,但不知如何压缩传送 ,和解压回放。请赐教!

解决方案 »

  1.   

    var
      mdata:array[1..10000] of char;
      k:integer;
      p: Pointer;
      FStream:TMemoryStream;
      Jpeg:TJPEGImage;
    begin
        FStream:=TmemoryStream.create;
          Jpeg:= TJpegImage.Create;
          Jpeg.CompressionQuality:=50;  //压缩比
          try
            Jpeg.Assign(Image10.Picture.Bitmap);
            Jpeg.SaveToStream(FStream);
            P:=FStream.Memory;
            FStream.Position:=0;
            for k:=1 to FStream.Size do mdata[k]:=pchar(dword(P)+k-1)^;
              IdUDPClient1.SendBuffer(mdata,FStream.Size);                    //UDP 发送
          finally
            Jpeg.Free;
          end;
       FStream.Free;
      

  2.   

    上面是压缩和传送
    下面是UDPServer的接收和图象的解压还原。
    procedure TForm7.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var
      Jpeg:tjpegimage;
      i:integer;
    begin
         for  i:=0  to length(X_IP)-1 do
         begin
            if X_IP[i]=IdUDPServer3.Binding.PeerIP  then
            begin
              Jpeg:=tjpegimage.Create;
              try
                AData.Position:=0 ;
                Jpeg.LoadFromStream(AData);
                Image9.Picture.Bitmap.Assign(Jpeg);
              finally
                Jpeg.free;
              end;
              exit;
            end;
         end;
    end;
      

  3.   

    发送流就行了,参考楼上的,我不用jpeg不过发送前最好用个算法压缩一下,可以用h.263
    或是用mpeg4标准的Xvid,或是vidX,Xvid是开源的遵守GPL协议
    vidx要给钱的,
    当然还有其他的,你自己确定了
      

  4.   

    http://whkong.diy.myrice.com/download/src/vcomp.htm
      

  5.   

    可以考虑使用第三方插件:DsPack