对不起,各位朋友,因为这段代码关系到一个商业软件,我不能将源码贴出来,付不起这个责任。不过我很高兴可以在这里和大家讨论理论上的问题,如果理论问题有了结果,实现应该是比较简单的了,我想的话。
我是通过IdTCPServer组件传出流,因为它的WriteStream是阻塞性的,所以我的分块实际是将流分为N部分,N次传出。而客户端每次收到一段流,就给服务段一个接收信号,同时把收到的流加到正在播放的流的末尾(当然,这是在另外一个线程中完成的,使用了临界区)。不过有问题,如果一次接收的流大了,因为有临界区,客户端的添加工作与流的播放会造成失帧;如果一次接收的小了,传输的速度会跟不上流播放的速度。我始终找不到一个折中的方法,也可能我的思想本身是错误的,还望高高手指点。