关于网络电话 by CJ(150分)

C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
Situation:

我想在局域网(LAN)上建立一个网络电话系统。
网络: 10M EtherNet
服务器: NOVELL 4.11 //关系不大NT也可
客户机: Win95/98
开发工具: DELPHI 3 OR 4
其它: 话筒、音响


Reauired://这道题的分数只需完成这部分就可以

点对点通讯,知道对方的主机名或IP均可。
我需要的效果就和打电话一样,我不知道,
怎么把声音连续的通过网络传输。我只会
传WAV。我试过每一段时间发一个WAV,但
是,效果不理想(有延迟)

Optional://如能完成最好,需要的话,可以追加分数

1、通话人超过三人,那么如何同时接受多方信息,而
后处理之?也就是,同时有两个以上人同时说话,需要
做混合之类的东西就比较复杂了。

2、如果是视频呢?
 
1.延时是肯定的.要使接收方能够连续地播放发送方的语音,大约需要0.5秒的
缓冲(也就是延时0.5秒以上).可以用Netmeeting试试,它的延时差不多就是
这个水平.
2.WAV的数据量太大,应该压缩.有多种标准可用:G.732.1,G.729A,GSM等.但是
这些标准都是对8KHZ采样定义的,对其它采样方式,可能不太适合.由于都是有
损压缩,压缩后质量肯定不如WAV.如果只在LAN上使用,可以用些简单的熵编码.
如果只有一对通信任务,带宽应该是够的.但是,如果要进行多方通信,就必须
考虑带宽的问题了.
3.如果跨路由器,应该使用RSVP保证传输带宽.RTP封装是必须的,其时戳保证接
收到的语音按顺序播放.
4.多方通信时,需要有服务器做交换和混合.服务器先接收所有终端发来的数据,
解码,并对每路终端合成其语音,再分别发送出去.在对服务器功能的不同要求
下,系统的实现难度有很大的不同.例如,最简单的情况,任何终端发出的数据
将被所有终端听到(<h3>包括</h3>自己),那么服务器只需要把所有数据混合
再发送就可以了.需要的带宽为(N+1),N为终端数量.如果要求稍微提高一点:
终端不能听到自己的声音(由于延时的存在,这个要求是很必要的).此时,服务
器必须为每个终端分别混音.网络带宽增加为2N,服务器运算量增加(N-1)倍,
对服务器的压力就很大了.
5.视频于声音原理是相同的.但对视频来说,压缩是必须的,而不再是可选的.另外,
当前的PC机还不能对视频进行实时压缩,实现时或牺牲质量,或牺牲成本.视频没
有混合问题,但调度问题很突出,因为每路视频的数据量都很大,对网络的冲击很大.
 
FROM CJ:

谢谢LHZ
1.延迟真的没有办法了吗?这是我问这个问题最主要的原因,如果有0.5秒的
延迟 用起来会很不舒服的。

2.我会考虑压缩,但是如何实现呢?这些算法有没有现成的 SOURCE 可用?自
己做会做死的。LHZ应该对压缩有心得吧:)

3.RSVP如何实现?我现在没有路由,但将来可能用到,我本来是直接用SOCKET
现在需要改进吗?

4.群体电话延迟更难过,请再详细说明:如何不听到自己的声音?

5.视频这是将来的事情,而且,一定会有摄影头什么的,他应该会提供一点
压缩什么的功能吧?不然自己写压缩的话,速度可能达不够。

to all and especially to huizhang:哪位大侠如果有音频/视频通讯程序
的SOURCE可以参考(简单点的就可以,复杂了CJ看不懂)可以加分。CJ要把
自己的积分控制在3,000以内



--------------------------------------------------------------------------------
来自:lhz 时间:99-5-1 19:23:54 ID:107441
??
我好象回答的另一个问题,您怎么把回贴贴到这里了? :) //haha

先说语音的问题:

1.不可能解决.延迟是肯定存在的,只有长短问题.如果网络通信带宽有
保障,系统硬件跟得上,可以将延迟控制在30ms.要再短就非常困难了,
除非用专门硬件并铺设专门网络......
如果不要求复杂的控制,可以在一般的PC机上实现0.2S左右的延时.
如果再缩短延迟,将严重影响回放质量(可能都听不见了).
2.有关于这些标准的源代码,但效率都比较低,只有理论上的意义.要实
用的编码器,还得自己编.不过有一个投机取巧的方法,就是用M$的
ACM(Audio Codec Manager).M$的Netmeeting带有G.723.1等几个
ACM,可以试试.我是没有试过的(如果用M$的ACM编码,就只有M$的
ACM可以解得开了.但有个附加的好处,就是可以将编码几个直接存成
WAV文件,在安装有这个ACM的系统上都可以直接播放).
3.RSVP是资源预约的协议,对当前网络通信的影响不大.如果考虑将来要
使用RSVP,那么现在用UDP通信就可以了.RSVP只对UDP有效.语音/视频
等实时数据也只需要UDP.
4.设有N个终端,一个服务器,对终端i来说,服务器要将N个终端中除i以外
的(N-1)路语音混合,再发送给i.每一路都要这种处理.这样,各个终端
收到的数据中就没有自己的声音了.
5.摄像头肯定不会提供压缩的,它输出的数据是模拟信号.可能有压缩的
是采集卡.但有压缩功能的采集卡都很贵.而且,采集卡提供的压缩算法
基本上没有甚麽用处,因为(1)它压缩的码率一般不能满足要求(2)它
输出的压缩格式只有自己能解开.
6.没有简单的音频/视频通讯程序,这些程序都很复杂,如果是实用的.网上
可以找到各种标准的编解码器,但都是原理性的,效率很差.完整的系统
比较少见.我倒是编过一个屏幕传输的程序(LAN,5-8帧每秒),可以冒充
简单的视频通信,但已经卖给别人了,所以不能给您:(
7.其实延时并不是那么难受.在通信双方只能通过网络交流时,0.5S的延时
不会有太大的感觉.国际长途通常都有超过0.5S的延时,您是否有明显的
感觉?
 
1、接受答案
2、版权问题好象不可避免吧,是否有其它办法?
3、我用UDP总是不放心,他不保证传输的绝对正确性呀,如果声音被搞掉了,
无法解码怎么办呀?
4、接受答案
5、摄像头好象提供一个类似的程序的,所以我像用它的驱动程序,可能吗?
6、可惜了,等一下会长吧
7、估计也没办法了,接受答案吧

再次感谢
 
2.版权问题,由于IE4/IE5是免费的,完全安装以后,就有Netmeeting了,
似乎没有甚麽版权问题.
3.用UDP就是取其不保证传输.实时数据从来都不需要保证传输.因为
如果传输导致数据丢失,那么即使重传这个数据,到了对方以后也
过时了,不能再播放这个数据了.如果一定要把所有的数据都按顺序
播放出来,由于网络传输的不确定性,中间必然有停顿,这比把过时
的数据丢了还糟.
BTW:通信和存储是两个很不相同的处理方式.不要用存储的观点来
处理传输中的问题.看一看关于通信的标准如H.261,H263等,
就会体会出其中奥妙.
5.我不知道"一个类似的程序"是甚麽样的.一般来说,数字摄像机才
有可能输出压缩的码流.摄像头输出的是模拟信号,不大可能有驱
动程序之说.我曾见过有摄像头和采集卡一起出售的,号称用于视
频会议,它带了一个程序用于传输视频,其实这个程序就是定制的
Netmeeting.不知"一个类似的程序"是不是只这个?
 
RE OLDS
RE 2:接受答案
RE 3:接受答案
RE 5:定制的 NETMEETING?怎么干? 如果没有版权问题,倒可以考虑。

NEW QUESSION

1、你的那个程序用摄像头吗?直接取屏幕传输我会做。
2、如何把话筒的声音不存储,直接传输?
3、可不可能,实现类似“声音流”的概念?也就是边传边放,
传到哪里放到那里?//异想天开?
4、能给些思路吗?流程之类的东西?有什么好的算法?
 
5.我没有做过.但猜想可以用Netmeeting SDK完成.M$有Free Download.

NQ:

1.No
2.??你还先把声音存储了才发送出去吗?直接将声音捕获到内存buffer就可以了吧?
用waveInXXXX函数,是内存接口的.
3.本来就是“声音流”,何来异想天开?这边录一段传一段,那边收一段放一段,不是
流是甚麽?
4.其实ITU的标准里就有很好的思路,当然有流程,算法多多,还有示例源码.
H.261和H.261是比较好的,又不多(XX页).
 
5、哦?WHERE?
NQ:
3、我的意思是STREAM不是BLOCK
4、WHERE?
 
5.<a href="http://www.microsoft.com/netmeeting/sdk/">here</a>
NQ:
3.STREAM和BLOCK没有区别。在网络上,所有STREAM都必须PACKAGE
成BLOCK。用UDP就是网络充分利用网络的BLOCK特性来配合实时的
需要。
4.我有。如果要,给个足够大的e-mail帐号。
 
不是很大,加起来约300KB,编码后就400KB的样子.
 
TO LHZ:发吧 cjcjc@online.sh.cn
TO ZX:WHAT?
 
已经发出了.
 
光盘我跟你发了!注意查收。
还有AHM我想跟你邮的。可是好象太大了!
我再试试... 不行的话,我给YYSUN,

你的程序我很感兴趣....very cool!
 
LHZ:
暂时还没有收到;
NET-MEETING的SDK我已经下来了,好象还比
较复杂的(CJ VC 水平实在烂的过分)有没
有变通的方法?


zx:
是原版的还是刻的?我会注意的。
AHH多大?我的油箱2M,可以发到
网易的:CJCJC@忘记了,4M

什么时候上网?谈谈,一个人累了点。
 
我们的e-mail经常出问题:(
我又发了一次.
 
原版的CD.9号寄的。
上次你给我的电话号码(学校的),和传呼,我都丢了!
有空给我发一个,给我传呼也可以,024-24226688-2536数字。
 
ZX:最近可能打不到我的电话了:((
我上个月只用了4张饭菜票。

LHZ:收到了,谢谢

只要会长明确表态,没有类似的程序和新的建议,分数就是LHZ的了。
 
给个 API 的 DEMO 吧,我看MSDN太烦了。录播即可,立刻加分如何?
 

Similar threads

顶部