#include #include #include "rtpsessionparams.h" #include "rtpudpv4transmitter.h" #include "rtpsession.h" #include "rtppacket.h" #include #include using namespace jrtplib; int main(void) { int localPort = 30026; // RTPSession rtpSession; RTPSession* rtpSessionPtr = new RTPSession(); RTPSessionParams SessParams; RTPUDPv4TransmissionParams TransParams; SessParams.SetOwnTimestampUnit(1.0/8000.0); // 时间戳:1秒钟8000个样本 TransParams.SetPortbase(localPort); // 设置本地接收的端口号 int iErrNum = rtpSessionPtr->Create(SessParams, &TransParams); if (iErrNum < 0){ printf( "Create RTP Session error! Reason: %d!\r\n", iErrNum ); exit(-1); } printf( "Create RTP Session OK! Reason: %d!\r\n", iErrNum); bool m_bRtpExit = false; while (!m_bRtpExit) { rtpSessionPtr->Poll(); rtpSessionPtr->BeginDataAccess(); if (rtpSessionPtr->GotoFirstSourceWithData()) { do { RTPPacket* packet; while ((packet = rtpSessionPtr->GetNextPacket()) != NULL) { printf("got data \n"); rtpSessionPtr->DeletePacket(packet); } } while (rtpSessionPtr->GotoNextSourceWithData()); } rtpSessionPtr->EndDataAccess(); std::this_thread::sleep_for(std::chrono::milliseconds(10)); } // // 开始接收数据 // rtpSessionPtr->BeginDataAccess(); // if (rtpSessionPtr->GotoFirstSource()) // { // do // { // RTPPacket *packet; // while ((packet = rtpSessionPtr->GetNextPacket()) != 0) // { // // 获取接收数据长度 // unsigned int recvSize = packet->GetPayloadLength(); // // 获取接收数据 // unsigned char * recvData = (unsigned char *)packet->GetPayloadData(); // std::cout << "Got packet with extended sequence number " // << packet->GetExtendedSequenceNumber() // << " from SSRC " << packet->GetSSRC() << "; recvSize " << recvSize << "[" << recvData << "]" // << std::endl; // // 删除数据包 // rtpSessionPtr->DeletePacket(packet); // } // } while (rtpSessionPtr->GotoNextSource()); // } // rtpSessionPtr->EndDataAccess(); // rtpSessionPtr->Destroy(); // rtpSessionPtr->AbortWait(); return 0; }