QT 下使用jrtplib

 1最近要在QT平台上实现流媒体传输,网上大多使用jrtplib 开源库,经过前期的收集资料,这两天终于成功的在QT上成功的运行起来了jrtplib 里面的exmple1.:有图有真相


下面我说说我的步骤:

1  在windows上编译jrtplib 3.9.1和jthread 1.3.1  下载和用CMake编译 

2  用VC++6.0 分别运行jthread 和 jrtplib(顺序很重要)

3  你会发现运行后在 jthread  项目下产生jthreadconfig.h(其实你看CMAKElist就明白了)

4 你会发现运行后在  jrtplib 项目下产生rtpconfig.h和rtptypes.h(其实你看CMAKElist就明白了)

5 将文件jthread-1.3.1 里面的jmutex.h   jmutexautolock.h jthread.h 和win32 文件夹里面的两个CPP(你会问pthread 里面也有两个CPP 貌似使用在unix 平台)放到jrtplib-3.9.1    文件src文件夹里面。

6 将VC产生的两个jthreadconfig.h  rtpconfig.h和rtptypes.h 也放在jrtplib-3.9.1    文件src文件夹里面

7 用QT加载jrtplib-3.9.1    文件src文件夹里面所有的文件 编译——buge来了

buge1 :ui64 无法识别

 解决办法:除掉数字后面的ui64 用(unsigned __int64)强制转化

return b*(unsigned __int64)(1000000)+(c* (unsigned __int64)(1000000))/f;

buge2: 

RTPNew 函数匹配模糊 因为与系统的new 有冲突:

解决办法:注释掉

//#define RTPNew(a,b) 			new(a,b)
//#else
buge3: 

multicastgroups 函数识别不了
解决办法:看他的定义在
RTP_SUPPORT_IPV6MULTICAST(支持多广播)下才有效,但是前面不支持导致此处的函数显示没有声明,对比
rtpudpv4transmitter.cpp 文件里面
#ifdef RTP_SUPPORT_IPV4MULTICAST
								  multicastgroups(mgr,RTPMEM_TYPE_CLASS_MULTICASTHASHELEMENT),
#endif // RTP_SUPPORT_IPV4MULTICAST

感觉rtpudpv6transmitter.cpp 文件里面 差点东西,所以我添加了一些:

    #ifdef RTP_SUPPORT_IPV6MULTICAST// 修改部分
								  multicastgroups(GetMemoryManager(),RTPMEM_TYPE_CLASS_MULTICASTHASHELEMENT),
                                  #endif// RTP_SUPPORT_IPV6MULTICAST
buge4 显示关于socket的函数都识别不了,因为没有加载库 Ws2_32.lib

解决办法:qt是在pro文件中 加入 LIBS += -lWs2_32 即可解决问题

说明:win7系统64bit,VC++6.0SP,QT5.3.1

到此可以睡觉了~~~~~具体成功的项目下载QT下成功例子



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值