当前位置: 首页 > news >正文

做外贸生意最好的网站wordpress添加字段

做外贸生意最好的网站,wordpress添加字段,电子商务系统分析报告,猎头公司是什么意思一、说明 RTP 现在的问题是要解决的流媒体的实时传输的问题的最佳方法。和JRTPLIB 是一个用C语言实现的RTP库。包含UDP通讯。刚使用JRTPLIB#xff0c;对JRTPLIB的理解还不够深#xff0c;当做使用时#xff0c;积累的一些经验写个笔记吧。 二、RTP协议 实时传送协议#x… 一、说明 RTP 现在的问题是要解决的流媒体的实时传输的问题的最佳方法。和JRTPLIB 是一个用C语言实现的RTP库。包含UDP通讯。刚使用JRTPLIB对JRTPLIB的理解还不够深当做使用时积累的一些经验写个笔记吧。 二、RTP协议 实时传送协议Real-time Transport Protocol或简写RTP也能够写成RTTP是一个网络传输协议RTP协议具体说明了在互联网上传递音频和视频的标准数据包格式。它一開始被设计为一个多播协议。但后来被用在非常多单播应用中。RTP协议经常使用于流媒体系统配合RTCP协议或者RTSP协议。由于RTP自身具有Time stamp所以在ffmpeg 中被用做一种formate。 RTP协议的具体介绍请參考这篇文章http://www.360doc.com/content/11/1009/15/496343_154624612.shtml 三、RTPSession类 这里不介绍jrtplib的编译安装。这个非常easy网上非常多地方都有解说。 jrtplib的使用中主要是环绕这个类来实现的因此大家有必要去查看源代码看这类的实现。为了方便使用我在这做了RTPSession的继承封装。以下直接贴代码了。 RTPSessionUtils.h #include rtpsession.h #include rtppacket.h #include rtpudpv4transmitter.h #include rtpipv4address.h #include rtpsessionparams.h #include rtperrors.h #ifndef WIN32 #include netinet/in.h #include arpa/inet.h #else #include winsock2.h #endif // WIN32 #include rtpsourcedata.h #include stdlib.h #include stdio.h #include iostream #include string//jrtplib应用需链接的lib #pragma comment(lib,ws2_32.lib) #pragma comment(lib, jrtplib_d.lib) #pragma comment(lib,jthread_d.lib)namespace jrtplib {class RTPSessionUtils : public RTPSession{typedef RTPSession base_type;public:RTPSessionUtils();~RTPSessionUtils();int AddDestination(const std::string ip, uint16_t port);int DeleteDestination(const std::string ip, uint16_t port);int CreateDefault(uint16_t port);protected:void OnNewSource(RTPSourceData *dat);void OnBYEPacket(RTPSourceData *dat);void OnRemoveSource(RTPSourceData *dat);void OnRTPPacket(RTPPacket *pack,const RTPTime receivetime,const RTPAddress *senderaddress);void OnRTCPCompoundPacket(RTCPCompoundPacket *pack,const RTPTime receivetime,const RTPAddress *senderaddress);void OnPollThreadStep();private:int GetAddrFromSource(RTPSourceData *dat, uint32_t ip, uint16_t port);}; }//整形的ip转成字符串ip static std::string IPToString(const unsigned int iIP) {struct in_addr inaddr;inaddr.s_addr htonl(iIP);return std::string(inet_ntoa(inaddr)); }//字符串ip转成整形ip static unsigned int IPToInt(const std::string sIP) {return inet_addr(sIP.c_str()); } RTPSessionUtils.cpp #include RTPSessionUtils.hnamespace jrtplib{RTPSessionUtils::RTPSessionUtils(){ #ifdef WIN32WSADATA dat;WSAStartup(MAKEWORD(2,2),dat); #endif // WIN32}RTPSessionUtils::~RTPSessionUtils(){ #ifdef WIN32WSACleanup(); #endif // WIN32}int RTPSessionUtils::CreateDefault(uint16_t port){RTPUDPv4TransmissionParams transparams;RTPSessionParams sessparams;sessparams.SetOwnTimestampUnit(1.0/10.0);//必须设置transparams.SetPortbase(port);//port必须是偶数return base_type::Create(sessparams, transparams);base_type::SetDefaultPayloadType(0);base_type::SetDefaultTimestampIncrement(0);base_type::SetDefaultMark(false);}int RTPSessionUtils::AddDestination(const std::string ip, uint16_t port){return base_type::AddDestination(RTPIPv4Address(ntohl(inet_addr(ip.c_str())), port));}int RTPSessionUtils::DeleteDestination(const std::string ip, uint16_t port){return base_type::DeleteDestination(RTPIPv4Address(ntohl(inet_addr(ip.c_str())), port));}int RTPSessionUtils::GetAddrFromSource(RTPSourceData *dat, uint32_t ip, uint16_t port){if (dat-IsOwnSSRC())return -1;if (dat-GetRTPDataAddress() ! 0){const RTPIPv4Address *addr (const RTPIPv4Address *)(dat-GetRTPDataAddress());ip addr-GetIP();port addr-GetPort();}else if (dat-GetRTCPDataAddress() ! 0){const RTPIPv4Address *addr (const RTPIPv4Address *)(dat-GetRTCPDataAddress());ip addr-GetIP();port addr-GetPort()-1;}return 0;}void RTPSessionUtils::OnNewSource(RTPSourceData *dat){uint32_t ip;uint16_t port;if (GetAddrFromSource(dat, ip, port))return;RTPIPv4Address dest(ip,port);base_type::AddDestination(dest);std::cout OnNewSource Adding destination IPToString(ip) : port std::endl;}void RTPSessionUtils::OnRemoveSource(RTPSourceData *dat){if (dat-ReceivedBYE())return;uint32_t ip;uint16_t port;if (GetAddrFromSource(dat, ip, port))return;RTPIPv4Address dest(ip,port);base_type::DeleteDestination(dest);std::cout OnRemoveSource Deleting destination IPToString(ip) : port std::endl;}void RTPSessionUtils::OnBYEPacket(RTPSourceData *dat){uint32_t ip;uint16_t port;if (GetAddrFromSource(dat, ip, port))return;RTPIPv4Address dest(ip,port);base_type::DeleteDestination(dest);std::cout OnBYEPacket Deleting destination IPToString(ip) : port std::endl;}//仅仅要有rtp包就会触发void RTPSessionUtils::OnRTPPacket(RTPPacket *pack,const RTPTime receivetime,const RTPAddress *senderaddress){std::cout OnRTPPacket: data: pack-GetPayloadData() std::endl;}//收到rtcp包触发void RTPSessionUtils::OnRTCPCompoundPacket(RTCPCompoundPacket *pack,const RTPTime receivetime,const RTPAddress *senderaddress){std::cout OnRTCPCompoundPacket: data: pack-GetCompoundPacketData() std::endl;}//隔段时间就会触发,也能够用于收包回调函数//void RTPSessionUtils::OnPollThreadStep()//{// BeginDataAccess();// // check incoming packets// if (GotoFirstSourceWithData())// {// do// {// RTPPacket *pack;// RTPSourceData *srcdat;// srcdat GetCurrentSourceInfo();// while ((pack GetNextPacket()) ! NULL)// {// std::cout Got packet pack-GetExtendedSequenceNumber() from SSRC srcdat-GetSSRC() std::endl;// DeletePacket(pack);// }// } while (GotoNextSourceWithData());// }// EndDataAccess();//} } server.cpp #include iostream #include RTPSessionUtils.h using namespace jrtplib; void main() {int status;RTPSessionUtils sess;status sess.CreateDefault(8888);if(status){std::cout RTP error: RTPGetErrorString(status) std::endl;return;}while (1){std::string buf;std::cout Input send data: ;std::cin buf;sess.SendPacket((void*)buf.c_str(), buf.length(), 0, false, 0);if(status){std::cout RTP error: RTPGetErrorString(status) std::endl;continue;}}system(pause); }client.cpp #include iostream #include RTPSessionUtils.h using namespace jrtplib;void main() {int status;RTPSessionUtils sess;status sess.CreateDefault(6666);if(status){std::cout RTP error: RTPGetErrorString(status) std::endl;return;}status sess.AddDestination(127.0.0.1, 8888);if(status){std::cout RTP error: RTPGetErrorString(status) std::endl;return;}while (1){std::string buf;std::cout Input send data: ;std::cin buf;sess.SendPacket((void*)buf.c_str(), buf.length(), 0, false, 0);if(status){std::cout RTP error: RTPGetErrorString(status) std::endl;continue;}}system(pause); } 转载于:https://www.cnblogs.com/hrhguanli/p/4565530.html
http://www.sadfv.cn/news/276642/

相关文章:

  • 网站建设提高信息惠州做网站建设价格
  • 佛山网站建设佛山网络推广wordpress 流量管理系统
  • pc 手机自适应网站用什么做wordpress一键采集
  • 哪个网站可以做代练wordpress站点是什么意思
  • 鄂州第一官方网站怎样做网站分流赚钱
  • 南山住房和建设局网站官网网站建设到运营需要多少钱
  • 网站阿里云备案要多久网站托管服务商
  • 公司建设网站费用会计分录wordpress主题多页面
  • 广州市网站制作网站建设上海网站建设
  • 找人注册公司需要多少钱哈尔滨seo优化客户
  • 建设网站的要点做网站的公司怎么发展业务
  • 网站建设管理制度落实响应式网站 哪些
  • 上海做无创DNA医院网站南昌网站建设公司服务器
  • 做网站用什么软件做公司网站建设推广方案模板
  • 设置网站解析做网站的软件叫code
  • 灯具网站模板怎么做网站轮播图片
  • 葫芦岛高端网站制作做外贸建网站需要多少钱
  • 什么是品牌型网站南昌网站建设公司排行榜前十
  • 银川建网站郓城菏泽网站建设
  • 个人备案的域名拿来做经营网站磁县网站设计公司
  • 网站开发计划甘特图wordpress人个网站
  • 电子商务做网站网站模板开发
  • 芜湖网站设计公司公司业绩怎么发到建设厅网站上
  • 网站控制台甜品网页设计图片
  • 中职网站建设教学计划wordpress显示所有小工具
  • 福建省建设厅网站局域网聊天工具排行
  • 北京市住房城乡建设部网站首页电 器建设网站目的及功能定位
  • 网站建站企业企业网站模板下载psd格式
  • 2.0网站线上建设什么意思网站备案 假通信地址
  • 淘宝刷单网站开发wordpass建设网站流程