怎么结合印象笔记怎么使用来使用Sublime Text

问题记录(11)
VC++(20)
先安装ipp和准备ipp-samples
w_ipp_ia32_p_6.0.2.074.exe百度云下载链接: /s/1nvPFD9J 密码: ixiw
w_ipp-samples_p_6.0.0.127&百度云下载链接: /s/1mi2HcfA 密码: 5rdq
1.想要在pjsip中加入729,首先要在 conifg_site.h(没有的话自己创建一个) 中加入以下宏
#define PJMEDIA_HAS_INTEL_IPP
#define PJMEDIA_HAS_INTEL_IPP_CODEC_G729 1
本人测试使用的是最新的 pjsip 2.4 源码,pjsip里面其实已经适配了729语音编码,
但是因为g729是有版权的,故而使用者需要另外付费去购买支持729的 Intel 的IPP
组件,由IPP生成的库文件给pjsip使用即可。
2.加入上述宏定以后编译器会各种报错,其实就是打开了ipp开关后需要的头文
件没有,逐一把ipp安装路径中的include,lib的路径添加到pjsip的工程里面去:
C:\Program Files (x86)\Intel\IPP\6.0.2.074\ia32\include
C:\Program Files (x86)\Intel\IPP\6.0.2.074\ia32\stublib
C:\Program Files (x86)\Intel\IPP\6.0.2.074\ia32\lib
3.加完那些没有错误只后,接着会提示没有找到库文件 speech.lib
(ipp低于6.0的版本是usc.lib)。这个库是由ipp-samples编译产生的,
把w_ipp-samples_p_6.0.0.127.rar解压文件名命名为ipp-samples,
双击这个\ipp-samples\speech-codecs\build32.bat 批处理顺利的话直
接编译产生speech.lib了,不顺利的话就黑框一闪而过,然后就不知
所措了。。。。。-_-|||
简单一些的批处理还可以看,这个就晕了,call来call去,goto来goto去,
一度放弃想找别的方法。无果,只好硬着头皮查批处理语法,
一条条去看了,其实原本你恐惧的事情,只要开始动手搞了也
没那么可怕了,有木有?有木有?有木有? O(∩_∩)O哈哈~
插满了pause + echo 调试,不过的语句就注释,不过的语句
就注释,不过的语句就注释。。。。。。。。
搞到最后就是上面这样,一看尼玛全是failed。。。。
于是去看log记录发现居然有个一个success,于是找到在
\ipp-samples\speech-codecs\_bin\win32_\lib 下找到了speech.lib 欣喜万分呐!!!
放到pjsip工程里去试了下居然ok了。
4. speech.lib 过了后,又缺个usc.h 在
\ipp-samples\speech-codecs\core\usc\include 可以找到。
5.pjsip编译成功,最后用的是libpjproject工程生成的lib文件,
libpjproject-i386-Win32-vc8-Release-Static.lib
6.下个MicroSIP源码测试,使用
libpjproject-i386-Win32-vc8-Release-Static.lib 即可支持g729了
编译完的项目源码
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6658次
排名:千里之外
原创:12篇
转载:17篇
(2)(1)(1)(1)(2)(1)(3)(1)(1)(1)(1)(2)(1)(4)(4)(2)(3)pjsua PJSIP中的 和Simple_ 例程, 使用 协议栈实现了软电话的几乎所有功能 VOIP program IP /视频会议 238万源代码下载-
&文件名称: pjsua
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 37 KB
&&上传时间:
&&下载次数: 86
&&提 供 者:
&详细说明:PJSIP中的PJSUA和Simple_pjsua例程,PJSUA使用PJSIP协议栈实现了软电话的几乎所有功能,包括注册、拨打、回应等等。simple_pjsua在不到200行的代码中实现了最简单的拨打和接听电话功能-PJSIP in PJSUA and Simple_pjsua routines, PJSUA use PJSIP protocol stack to achieve a soft phone almost all functions, including registration, call, respond, and so on. simple_pjsua in less than 200 lines of code to achieve the most simple to make and receive phone
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&pjsua\gui.h&&.....\main.c&&.....\main_rtems.c&&.....\pjsua_app.c&&pjsua&&.....\simple_pjsua.c
&[]:文件不全&[]:文件不全&[]:文件不全
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - pjsip
一个开源的VOIP项目,详细的源码资料
&[] - 基于SIP协议的简单聊天系统,实现了基本的聊天功能,适合于初学者进行研习。
&[] - 很好的SIP相关的资料,由浅入深的介绍SIP。包括会议初始化协议:SIP,SIP协议的操作,SIP工具包,用SIP工具包创建应用等。
&[] - pjsip最新开源库,用于开发智能手机可视频电话等最新功能
&[] - sip开发 最经典sip开发指南,本人从事sip方面应用开发,欢迎所有同行交流
&[] - pjsIP 2.0 版本 PJSUA 可执行程序
cortex-A8平台验证OK。交叉编译版本为 gcc.4.5.3
&[] - SIP协议栈及开发实例,VC++6.0已编译通过
&[] - windows XP下编译linphone详细步骤,包括wingw的安装以及各种配置。
&[] - 很多很多有用的信息
pjsip的开发指导,共享 大家一起学习
&[] - 这是一个sip软终端pjsip的开发文档,里面详细介绍了pjsip。是英文的PDF文档。匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。流媒体(86)
需要添加pjlib/include/pj/config_site.h&
#define PJMEDIA_HAS_VIDEO 1
#define PJSUA_MEDIA_HAS_PJMEDIA 1
3 需要熟悉的例子:
&&pjmedia_test&&视频的捕捉和播放
&&pjmedia 的视频捕捉和传输vid_streamutil.c
&&simpleua.c&&简单的sip 和视频的协作
&&pjsip_ua.c&&完整的sip 和视频的协作
中添加视频信息
添加sdp信息中的视频部分主要通过下面两个步骤处理。
消息的sdp中添加视频信息
主要在endpoint.c的pjmedia_endpt_create_sdp()函数中添加。具体的可以看其中的代码,以及代码中的注释。
注意pjmedia_endpt_create_sdp(&pjmedia_endpt&*endpt,
&&&&&&&&&&&&&&&&&&&&&&&&&&pj_pool_t&*pool,
&&&&&&&&&&&&&&&&&&&&&&&&&&unsigned&stream_cnt,
&&&&&&&&&&&&&&&&&&&&&&&&&&const&pjmedia_sock_info&sock_info[2],
&&&&&&&&&&&&&&&&&&&&&&&&&&pjmedia_sdp_session&**p_sdp&)函数的第三个参数stream_cnt,第四个参数sock_info在使用pjsua_media_channel_create_sdp()调用时,重新调整了输入的参数值。
信息中视频的rtp端口的生成
在pjus_media.c文件中的pjsua_media_subsys_start()函数使用pjsua_media_transports_create添加创建rtp要使用的transport端口(也就是socket端口)。这样在1中的sdp信息中就可以获取到视频通讯的本地创建的rtp端口。
视频处理模块主要完成视频的采集、编码、解码、回放、以及将数据送给rtp或者从rtp获取到数据的功能。其工程为pjmedia-videodev。
CCameraMgr主要实现摄像头的管理功能。如果移植mobile可以考虑修改这部分。
CCodecVideo主要实现视频编解码的功能。如果添加H.263、H.264编解码可以直接修改这部分代码。
CCodecDataChannel主要实现整个视频模块的管理功能。视频的采集、编码、解码、回放、以及将数据送给rtp或者从rtp获取到数据的功能。
Videodev主要实现pjmedia-videodev对Pjsip的外部接口功能。这些接口可以根据需要继续添加。目前应该够用。具体实现见注释。
注意这部分跟rtp交互的接口主要通过两个函数实现。Rtp模块通过pjmedia_video_query_frame_attach接口将回调设置到Pjmedia-videdev模块。Pjmedia-videodev模块,在获取到编码数据后,通过put_frame_video_data将数据送给pjmedia的rtp层,进行rtp打包传输。
在stream.c中pjmedia_stream_create_video处理过程中通过调用pjmedia_video_query_frame_attach将回调函数设置给pjmedia-videodev模块。这样,在启动视频工作线程后,就可以通过put_frame_video_data源源不断的将编码后的数据送给stream.c的rtp的put_frame_video接口进行视频的rtp发送。注意这里对于视频包需要拆包处理。
对于从rtp接收到的数据。都在stream.c的on_rx_rtp回调来处理。这里处理了视频和音频以及dtmf数据。我们对于解析后pt类型为34(H.263)、31(H.261)的数据直接进行视频处理on_rx_video_rtp。通过on_rx_video_rtp将接收到的视频数据写入pjmedia-videodev的Jitterbuffer(NetPool)中,这样就完成了rtp数据接收视频数据源源不断的输入到pjmedia-videodev模块。
对于接收到的视频数据,已经放入netpool中。我们通过启动本地线程不断地从缓冲中获取到数据(视频数据需要重新组赈,然后解码回放),这个通过CCocecDataChnanel::&ShowRemoteVideo来实现。
这个简单,也就是直接获取到摄像头的数据,在本地显示的过程。主要通过CCodecDataChannl::&ShowLocalVideo来实现。
worker_proc_video主要完成对pjmedia-videdev的pjmedia_video_get_frame_and_send接口的调用。完成视频采集编码并将数据送给rtp的过程。这里注意,对于在pjsip工程中的线程,必须使用pj_thread_create创建,例如:
//add with lianhy in
创建视频工作线程
&&&&status&=&pj_thread_create(&endpt-&pool,&&video&,
&worker_proc_video,
&&&&&&&&endpt, 0, 0, &endpt-&thread_video);
主要通过Pjmedia-vidodev的接口pjmedia_video_query_frame_start来启动。当然对应的停止应该是pjmedia_video_query_frame_stop。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:120209次
积分:2180
积分:2180
排名:第13902名
原创:74篇
转载:182篇
(1)(1)(1)(1)(1)(2)(2)(3)(6)(10)(6)(20)(5)(11)(11)(8)(2)(4)(14)(18)(10)(5)(13)(21)(73)(7)首先要正确的编译pjsip、安装VC6的最新Platform SDK 。(安装的时候请不要选择注册环境变量,这样可能破坏系统的开发环境)、安装Direct X SDK。将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools-&Options-&Directories)根据自己项目的运行时库设置pjsip的运行时库,例如:如果项目的运行时库为 MDd 那么pjsip的各个项目的运行库也要为 MDd,这个可以在&Project(工程)-&Settings(设置)-&C/C++ -&Category(Code Generation) -&User run-time Library&中看到。一定要将pjsip中的各个工程调整为和你的项目的工程一样。以上各项都完成后,将pjsua项目设置为活动项目,然后开始编译。编译完成后,将pjproject/pjlib/lib、pjproject/pjlib-util/lib、pjproject/pjmedia/lib、pjproject/pjnath/lib、pjproject/pjsip/lib、pjproject/third_party/lib 目录下的*.lib库文件复制到 pjproject/lib 目录下,方便统一使用然后要设置自己的工程了同样将Platform SDK 和 Direct X SDK的 include、lib路径添加到VC6中,(Tools-&Options-&Directories)首先要添加宏定义 PJ_WIN32=1 &Project(工程)-&Settings(设置)-&C/C++ -&Category(General) -&Preprocessor definitions& 中的最后添加 PJ_WIN32=1 用逗号隔开。然后要包含pjsip头文件的目录,这里假设pjsip放在你的工程目录下(.../project/pjproject),&Project(工程)-&Settings(设置)-&C/C++ -&Category(Preprocessor) -&additional include directories&中添加 &./pjproject/pjlib/include/,./pjproject/pjlib-util/include/,./pjproject/pjmedia/include/,./pjproject/pjnath/include/,./pjproject/pjsip/include/&设置链选项:添加一些系统库文件,在&Project(工程)-&Settings(设置)-&Link-&Object/Library Modules&中添加&IPHlpApi.lib wsock32.lib ws2_32.lib ole32.lib dsound.lib&。设置库文件目录:在&Project(工程)-&Settings(设置)-&Link-&Additional Library path&中添加"./pjproject/lib/"。源文件中添加如下语句,这里假设已经编译了release 和 debug的pjsip。#include &pjsua-lib/pjsua.h&#ifdef _DEBUG#pragma comment(lib,"pjlib-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjlib-util-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjmedia-audiodev-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjmedia-codec-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjmedia-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjnath-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjsip-core-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjsip-simple-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjsip-ua-i386-win32-vc6-debug.lib")#pragma comment(lib,"pjsua-lib-i386-win32-vc6-debug.lib")#pragma comment(lib,"libresample-i386-win32-vc6-debug.lib")#pragma comment(lib,"libspeex-i386-win32-vc6-debug.lib")#pragma comment(lib,"libsrtp-i386-win32-vc6-debug.lib")#pragma comment(lib,"libg7221codec-i386-win32-vc6-debug.lib")#pragma comment(lib,"libgsmcodec-i386-win32-vc6-debug.lib")#pragma comment(lib,"libilbccodec-i386-win32-vc6-debug.lib")#pragma comment(lib,"libmilenage-i386-win32-vc6-debug.lib")#pragma comment(lib,"libportaudio-i386-win32-vc6-debug.lib")#endif#ifdef NDEBUG#pragma comment(lib,"pjlib-i386-win32-vc6-release.lib")#pragma comment(lib,"pjlib-util-i386-win32-vc6-release.lib")#pragma comment(lib,"pjmedia-audiodev-i386-win32-vc6-release.lib")#pragma comment(lib,"pjmedia-codec-i386-win32-vc6-release.lib")#pragma comment(lib,"pjmedia-i386-win32-vc6-release.lib")#pragma comment(lib,"pjnath-i386-win32-vc6-release.lib")#pragma comment(lib,"pjsip-core-i386-win32-vc6-release.lib")#pragma comment(lib,"pjsip-simple-i386-win32-vc6-release.lib")#pragma comment(lib,"pjsip-ua-i386-win32-vc6-release.lib")#pragma comment(lib,"pjsua-lib-i386-win32-vc6-release.lib")#pragma comment(lib,"libresample-i386-win32-vc6-release.lib")#pragma comment(lib,"libspeex-i386-win32-vc6-release.lib")#pragma comment(lib,"libsrtp-i386-win32-vc6-release.lib")#pragma comment(lib,"libg7221codec-i386-win32-vc6-release.lib")#pragma comment(lib,"libgsmcodec-i386-win32-vc6-release.lib")#pragma comment(lib,"libilbccodec-i386-win32-vc6-release.lib")#pragma comment(lib,"libmilenage-i386-win32-vc6-release.lib")#pragma comment(lib,"libportaudio-i386-win32-vc6-release.lib")#endif至此,pjsip就可以用在工程里面了,写的比较仓促,如果有遗漏的地方或问题请联系我。

我要回帖

更多关于 印象笔记使用教程 的文章

 

随机推荐