=====================
myRTSPServer.cpp 1.建立任务调度 scheduler = BasicTaskScheduler::createNew(); env = BasicUsageEnvironment::createNew(*scheduler); 2.建立RTP/RTCP端口 unsigned short rtpPortNumAudio = getDestAudioPort(); unsigned short rtcpPortNumAudio = rtpPortNumAudio +1; struct in_addr destinationAddress; destinationAddress.s_addr = our_inet_addr("192.168.10.100"); //不设置会导致组播,client端IP const Port rtpPortAudio(rtpPortNumAudio); const Port rtcpPortAudio(rtcpPortNumAudio); rtpGroupsockAudio = new Groupsock(*env, destinationAddress, rtpPortAudio, ttl); rtcpGroupsockAudio = new Groupsock(*env, destinationAddress, rtcpPortAudio, ttl); 3.建立会话 CreateAudioSink(rtpGroupsockAudio); audioRTCP = RTCPInstance::createNew(*env, rtcpGroupsockAudio, getBandwidthAudio(), (const unsigned char*)getName(), audioSink, NULL /* we're a server */, isSSM); 4.创建RTSPServer rtspServer = RTSPServer::createNew(*env,8554); sms= ServerMediaSession::createNew(*env, "tanktest", "Audio Stream", "Session streamed by \"Tank\"", isSSM); sms->addSubsession(PassiveServerMediaSubsession::createNew(*audioSink, audioRTCP)); rtspServer->addServerMediaSession(sms); char* url = rtspServer->rtspURL(sms); strcpy(remoteUrl,url); 注意: live555/liveMedia/RTSPServer.cpp void RTSPServer::RTSPClientSession ::handleCmd_SETUP(char const* cseq, char const* urlPreSuffix, char const* urlSuffix, char const* fullRequestStr); live555/liveMedia/PassiveServerMediaSubsession.cpp void PassiveServerMediaSubsession ::getStreamParameters(unsigned clientSessionId, netAddressBits clientAddress, Port const& /*clientRTPPort*/, Port const& clientRTCPPort, int /*tcpSocketNum*/, unsigned char /*rtpChannelId*/, unsigned char /*rtcpChannelId*/, netAddressBits& destinationAddress, u_int8_t& destinationTTL, Boolean& isMulticast, Port& serverRTPPort, Port& serverRTCPPort, void*& streamToken);