直接正文,仅描述我个人对它的理解,有错误欢迎指正。
目前我们常见到的二次拨号方式为:inband、outband、rfc2833
inband的优点是目前所有设备对它都很好的支持,因为它就是源音频流,但它的缺点也是致命的,由于它像普通语音流一样会进行终端的编码压缩,就导致在网络差的情况下,造成按键音的丢失。
outband的优点是基于信令层面的,基本只要通话信令正常,它就可以安全经过NAT/防火墙,不像其它两种还可能涉及媒体穿透NAT/防火墙的问题,但由于它是基于信令层面来实现媒体按键的通知,就造成不实时。
rfc2833的优点是比较实时,占用带宽资源也比较小,但一些低廉的芯片设备对它的兼容性不是太好。
考虑上述不同方式,建议新的产品使用rfc2833方式,对接老式的低廉设备使用inband方式,如果对媒体穿透有所考虑,而不在乎实时问题,则可以选择outband方式(当然还要考虑对端设备是否支持)。