Freeswitch源码中mod_h323模块,默认是不编译的。该模块可以发送H.323消息.
基于Freeswitch1.6版本,编译mod_h323步骤如下:
1.编译依赖库ptlib
- 编译依赖库h323plus
- 编译mod_h323
编译ptlib
按照《Freeswitch权威指南》里的简单介绍,ptlib和h323plus版本是有对应关系的。因为那本书距离现在有些时间了,可能版本已经不是最新了。
最新版本的下载地址在这里.

按照笔者写此篇帖子的时间,最新的版本如上图所示。
如果按照书中的介绍,的确存在编译问题。
按照书中的方法,将对应的include引用注释掉即可解决此问题。
编译h323plus
解决了ptlib库的编译问题后,继续编译h323plus。这里没有遇到编译问题。
编译mod_h323
源码编译过程中也会存在一个错误。
// 错误大致在mod_h323_globals这个类型无法识别
SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, mod_h323_globals.codec_string);

原因是下面这句话位置稍微偏后了一点 (可能是不同编译器处理行为不同造成的)
// src/mod/endpoints/mod_h323/mod_h323.cpp:51
static struct mod_h323_globals mod_h323_globals = { 0 };
把它往前提一提,再编译就可以了。
mod_h323.conf.xml
默认好像是没有的,这里的初始的配置文件
<configuration name="h323.conf" description="H323 Endpoints">
<settings>
<param name="trace-level" value="10"/>
<param name="context" value="default"/>
<param name="dialplan" value="XML"/>
<param name="codec-prefs" value="PCMA,PCMU,GSM,G729"/>
<param name="gk-address" value=""/> <!-- empty to disable, "*" to search LAN -->
<param name="gk-identifer" value=""/> <!-- optional name of gk -->
<param name="gk-interface" value=""/> <!-- mandatory listener interface name -->
<param name="gk-retry" value="30"/> <!-- optional GK register retry timer -->
<param name="faststart" value="true"/> <!-- optional -->
<param name="h245tunneling" value="true"/> <!-- optional -->
<param name="h245insetup" value="true"/> <!-- optional -->
<param name="jitter-size" value="60"/> <!-- optional -->
<param name="progress-indication" value="8"/> <!-- optional - PI value in progress message-->
<param name="alerting-indication" value="8"/> <!-- optional - PI value in alerting message-->
</settings>
<listeners>
<listener name="default">
<param name="h323-ip" value="$${local_ip_v4}"/>
<param name="h323-port" value="1720"/>
</listener>
</listeners>
</configuration>
网友评论