当前位置:首页 » 编程软件 » ptlib编译

ptlib编译

发布时间: 2022-08-01 15:27:39

❶ opal 视频制式

OPAL是Open Phone Abstraction Library的字母缩写,仍然是Equivalence公司开发的开源VoIP协议栈,从2001年便开始开发了,直到现在还没有正式发布过一个版本,只能从CVS: 下载最新的版本,而且现在的2.05bate版有着非常多的问题,但这些丝毫不能阻止我对OPAL的看好。OPAL仍然采用PWLIB作为开发库,最新的PWLIB实际已经只剩PTLIB,Equivalence公司已经停止了对PWLIB的GUI开发了,GUI全面转向更为强大的wxWindows。OPAL作为Openh323的下一代协议栈最大的特点是加入了对SIP协议的支持,OPAL保留了Openh323大部分代码,并加入了对EndPoint,Connection等抽象描述的基类,使得添加新的协议和设备变得更加简单和方便。

OPAL中最重要的类是新加的:OpalManager,它跟Openh323中的H323EndPoint地位一样,它定义了OPAL系统中最基本的操作,所以每个应用程序必须从OpalManager派生一个类,然后重载虚函数实现自己的操作。
OpalManager::SetUpCall(partyA,partyB,token); 呼叫,partyA是会话发起人,partyB是会话接受人
OpalManager::OnIncomingConnection(connection); 接听,返回TRUE则接听,返回FLASH则拒绝
OpalManager::AdjustMediaFormats(connection,mediaFormats); 调整媒体格式
OpalManager::ClearCall(token,reason,sync) 清除呼叫,sync如果为NULL则不等待快速返回
OpalEndPoint是描述端点的基类,H323,SIP,PSTN,IVR,LID,声卡的端点都是继承于这个类,在这里值得注意的是连声卡设备也看做一种端点。
OpalPCSSEndPoint则是EndPoing中比较重要的一个类,毕竟打电话还是声卡用的多,OpalPCSSEndPoint的构造函数必须引用派生的OpalManager类的实例。

下面具体例子SimpleOPAL来讲解:
opal = new MyManager; //新建一个MyManager的实例
if (opal->Initialise(args)) //调用MyManager::Initialise()函数初始化
opal->Main(args); //等待用户输入命令
cout << Exiting << GetName() << endl;
delete opal; //擦pp
部分Initialise()函数代码:
SetVideoInputDevice(video); //设置输入视频设备
...
SetVideoOutputDevice(video); //输出视频设备
...
SetAudioJitterDelay(minJitter, maxJitter); //声音抖动缓存的最小和最大值
...
SetMediaFormatMask(args.GetOptionString(D).Lines()); //屏蔽的媒体格式
SetMediaFormatOrder(args.GetOptionString(P).Lines()); //媒体格式的使用顺序
...
SetTranslationAddress(args.GetOptionString(translate)); //设置外部IP地址
...
Set***Ports(rgs.GetOptionString(tcp-base).AsUnsigned(),
args.GetOptionString(tcp-max).AsUnsigned()); //设置相关的端口
SetSTUNServer(args.GetOptionString(stun)); //使用STUN服务器
...
pcssEP = new MyPCSSEndPoint(*this); //新建一个MyPCSSEndPoint实例
pcssEP->SetSoundDevice(args, sound, PSoundChannel::Recorder)//设置相关的播放声音设备
...
h323EP = new H323EndPoint(*this); //h323EP的初始化
h323EP->DisableFastStart(args.HasOption(f)); //关闭快速拨号模式
h323EP->DisableH245Tunneling(args.HasOption(T)); //关闭H245通道模式
h323EP->AddAliasName(aliases[i]); //添加昵称
h323EP->SetInitialBandwidth(initialBandwidth); //限制带宽
h323EP->StartListeners(listeners) //现在才开始监听,默认是TCP:1720
h323EP->SetGatekeeperPassword(args.GetOptionString(p)); //注册网守所需的密码
h323EP->UseGatekeeper(gkHost, gkIdentifer, gkInterface) //注册网守
...
sipEP = new SIPEndPoint(*this); //SIP也来了
sipEP->SetUserAgent(args.GetOptionString(sip-user-agent)); //设置用户代理,UserAgent就相当于最初openh323的endpoint
sipEP->SetProxy(args.GetOptionString(sip-proxy)); //设置SIP代理,此处proxy相当于h323里的Gatekeeper
sipEP->SetMIMEForm(args.HasOption(use-long-mime)); //MIME头的格式
sipEP->StartListeners(listeners) //监听开始,默认是TCP:5060和UDP:5060
Main()函数部分代码:
if (pcssEP != NULL && !pcssEP->incomingConnectionToken) { //小心,有电话来了
if (cmd == n)
pcssEP->ClearCall(pcssEP->incomingConnectionToken, //打死我都不接
OpalConnection::EndedByRefusal);
else if (cmd == y)
pcssEP->AcceptIncomingConnection(pcssEP-> //喂,小莉吗?
incomingConnectionToken);
}
...
OpalCall * call = FindCallWithLock(currentCallToken); //让我看看是那一个通话
if (call != NULL) {
cout << Clearing call << *call << endl;
call->Clear(); //废话那么多,打IP电话也要钱的,挂拉
call->Unlock();
...
if (potsEP != NULL) //是打电脑还是打座机呢?
SetUpCall(pots:*, params[1], currentCallToken); //打座机吧(PSTN)
else
SetUpCall(pc:*, params[1], currentCallToken); //打电脑不要钱,嘿嘿

OPAL中的例子MFC根本无法使用,Openphone的GUI使用了wxWindows,所以必须安装了wxWindows才能正常编译,opalgw这玩意我试过好多次根本无法让别人注册,看来OPAL要走的路还很长,不过Equivalence公司开发已经渐渐的从Openh323转向了OPAL,相信不久一个稳定的OPAL将会被发布.

❷ 如何用c++调用pjsip库实现一个简单的sip服务器

1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。

2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源

3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpmp。
不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。

❸ sip协议如何用C语言实现

1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。

2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源

3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpmp。
不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。

❹ ptlib的编译错误 环境:xp系统和vc++6 求牛人解答

\..\..\include\ptlib/pstring.h(1646) : error C2143: syntax error : missing ';' before '&'
..\..\..\include\ptlib/pstring.h(1646) : error C2433: 'wostream' : 'inline' not permitted on data declarations
..\..\..\include\ptlib/pstring.h(1646) : error C2501: 'wostream' : missing storage-class or type specifiers
..\..\..\include\ptlib/pstring.h(1646) : error C2061: syntax error : identifier 'wostream'
看你这些错误,可能是代码的问题,建议你好好检查代码的完整性,wostream这个是什么头文件,没听过,如果是软件和XP系统问题,我想不会出现这些错误,而是直接系统崩溃,希望能采纳

热点内容
sessionidpython 发布:2025-02-09 09:08:53 浏览:275
华为手机验证码和密码忘了是多少 发布:2025-02-09 08:53:53 浏览:798
逆战笔记哪个配置好玩 发布:2025-02-09 08:53:04 浏览:599
怎么打开电脑云服务器 发布:2025-02-09 08:36:01 浏览:219
日元对人民币算法 发布:2025-02-09 08:35:52 浏览:39
安卓手机微信语音怎么不能转文 发布:2025-02-09 08:25:30 浏览:922
c上机编程题 发布:2025-02-09 08:17:18 浏览:319
显示语法错误编译不出来 发布:2025-02-09 08:17:09 浏览:286
酒店配置什么灭火系统 发布:2025-02-09 08:06:37 浏览:774
java至尊 发布:2025-02-09 08:03:23 浏览:559