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下成功例子

QT 下使用jrtplib_第1张图片


你可能感兴趣的:(C++,qt,流媒体,JRtplib)