求教:UDP怎么样将服务器接收的TStream转成Byte数组

wfwfwfbb 2014-06-23 03:31:44
最近在搞在线UDP视频传输,在客户端抓图,压缩后生成数据存储在
FrameBuf:array [0..704*576*3 ] of Byte; 这样的一个数组中
再通过 IdUDPClient1.SendBuffer(FrameBuf,Ret); 将数据发送到服务端,现在我想怎么样才能在服务端得到的TStream中转换成 FrameBuf并进行解压。

或者谁有最简单的点对点视频,包括采集,压缩,解压,显示,要求100K的网络中不卡的视频100R收
...全文
310 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aniugee 2014-08-05
  • 打赏
  • 举报
回复
setlength(buffer,size); stream.Position := 0; stream.read(buffer[0],size);
pathletboy 2014-08-02
  • 打赏
  • 举报
回复
TStream的派生类TMemoryStream有个Memory属性,是指针类型,始终指向Stream的首字节。你可以这样访问
type
  PFrameBuf = ^TFrameBuf;
  TFrameBuf = array [0..704*576*3 ] of Byte;

  PFrameBuf(stream.Memory)[0]
ZyxIp 2014-08-02
  • 打赏
  • 举报
回复
首先,UDP发送的包字节数不要太大,你这704*576*3得是多少字节啊。 每个UDP包不要超过1024字节。 你先创建一个缓冲区,行将生成的数据放在这个缓冲区,然后循环每次发送 1024 字节。在每个数据包前添加包序号, 接收时按顺序处理。 要提高速度,一个是网络,在就是对源数据进行压缩处理。 至于怎么压缩那就不知道了,这可以每个搞视频语音传输聊天的核心技术。
裕多惠 2014-08-01
  • 打赏
  • 举报
回复
要先把数组,转换成记录类型再发送,接到到记录再处理。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧