参考网上文章调试了一个例子,实现从摄像头IPC通过rtsp获取码流转发到EasyDarwin服务器功能
参考文章:https://blog.csdn.net/xiejiashu/article/details/34434669
使用testRTSPClient例子编译了一个rtspclient,从EasyDarwin服务器获取码流功能
记录下相关信息:
使用的live555版本是2015年的,因为最新的版本去掉了DarwinInjector.cpp,不支持对Darwin的支持,后面有必要在考虑整合到最新版本的live555中
下载了文章中的代码,把转发IPC的代码合并到自己的工程中,由于live555版本的区别,编译不过,用比较工具查看代码,然后把ProxyServerMediaSubsession类的声明从ProxyServerMediaSession.cpp移到了ProxyServerMediaSession.hh中,同时增加了两个函数,编译通过,增加的函数是:
char const* mediumName() const { return fClientMediaSubsession.mediumName(); }
unsigned char rtpPayloadFormat() const { return fClientMediaSubsession.rtpPayloadFormat(); }
修改缓冲大小:
main函数中需添加
OutPacketBuffer::maxSize = 800000;
创建live555基本环境,所有live555程序必须的:
scheduler = BasicTaskScheduler::createNew();
env = BasicUsageEnvironment::createNew(*scheduler);
用ProxyServerMediaSession类实现连接IPC码流功能
sms = ProxyServerMediaSession::createNew(*env, NULL, src);
此调用会创建跟IPC的rtps连接
类的继承关系:
ProxyServerMediaSession->ServerMediaSession->Medium
ProxyServerMediaSession的构造函数会调用defaultCreate